ความสำคัญของชุดอัลกอริทึม


15

มีคนในการอภิปรายนำมาซึ่ง (เขาคิดว่า) อาจมีกลยุทธ์อย่างต่อเนื่องจำนวนน้อยในการเข้าถึงปัญหาที่เฉพาะเจาะจง ปัญหาเฉพาะคือกลยุทธ์การซื้อขาย (ไม่ใช่อัลกอริทึม แต่เป็นกลยุทธ์) แต่ฉันคิดว่านั่นเป็นประเด็นสำหรับคำถามของฉัน

นี่ทำให้ฉันคิดถึงความสำคัญของเซตอัลกอริทึม ฉันค้นหามาซักพักแล้วแต่ไม่มีอะไรเกิดขึ้น ฉันคิดว่าเนื่องจากเครื่องจักรทัวริงทำงานด้วยชุดตัวอักษรที่ จำกัด และเทปจะต้องสามารถจัดทำดัชนีได้นับได้จึงเป็นไปไม่ได้ที่จะมีอัลกอริธึมจำนวนมากมายนับไม่ถ้วน ทฤษฎีเซตของฉันยอมรับว่าเป็นสนิมดังนั้นฉันไม่แน่ใจเลยว่าเหตุผลของฉันถูกต้องและฉันอาจจะไม่สามารถพิสูจน์ได้ แต่มันเป็นความคิดที่น่าสนใจ

ความสำคัญของเซตอัลกอริธึมคืออะไร?


1
ดังที่ Yuval Filmus กล่าวมีเครื่องจักรทัวริงจำนวนมาก แต่มีหลายครอบครัวที่ไม่สม่ำเสมอของวงจรบูลีนเนื่องจากพวกมันสามารถคำนวณฟังก์ชันบูลีนที่มีค่าได้ แต่นั่นอาจไม่ใช่สิ่งที่คุณหมายถึงโดย "อัลกอริทึม"
Reinstate Monica

คำตอบ:


28

อัลกอริธึมได้รับการอธิบายอย่างไม่เป็นทางการว่าเป็นลำดับที่แน่นอนของคำสั่งที่เป็นลายลักษณ์อักษรสำหรับการทำงานบางอย่างให้สำเร็จ อย่างเป็นทางการมากขึ้นพวกมันถูกระบุว่าเป็นเครื่องทัวริงแม้ว่าคุณจะสามารถอธิบายได้อย่างเท่าเทียมกันว่าเป็นโปรแกรมคอมพิวเตอร์

การทำพิธีการที่แม่นยำที่คุณใช้นั้นไม่สำคัญมากนัก แต่ประเด็นพื้นฐานคืออัลกอริธึมแต่ละอันสามารถเขียนลงในลำดับที่ จำกัด ของตัวละครซึ่งตัวละครจะถูกเลือกจากชุด จำกัด บางตัวเช่นตัวอักษรโรมัน ASCII หรือศูนย์และตัวอักษร เพื่อความง่ายลองสมมุติว่ามีศูนย์และคน ลำดับของเลขศูนย์และเลขใด ๆ เป็นจำนวนธรรมชาติที่เขียนด้วยเลขฐานสอง นั่นหมายถึงมีจำนวนอนันต์นับไม่ถ้วนของอัลกอริธึมเนื่องจากอัลกอริธึมทุกตัวสามารถแสดงเป็นจำนวนธรรมชาติได้

สำหรับเครดิตเต็มรูปแบบคุณควรกังวลว่าหมายเลขธรรมชาติบางอย่างอาจไม่ใช่รหัสโปรแกรมที่ถูกต้องดังนั้นจึงอาจมีอัลกอริทึมน้อยกว่าหมายเลขธรรมชาติ (สำหรับเครดิตโบนัสที่คุณอาจยังจะสงสัยว่าถ้าเป็นไปได้ว่าทั้งสองหมายเลขธรรมชาติที่แตกต่างกันแทนวิธีเดียวกัน.) อย่างไรก็ตามprint 1, print 2, print 3และอื่น ๆ เป็นขั้นตอนวิธีการและแตกต่างกันทั้งหมดจึงมีอย่างน้อยวท์ขั้นตอนวิธีการหลายอย่างมากมาย

ดังนั้นเราจึงสรุปได้ว่าชุดอัลกอริทึมนั้นไม่มีที่สิ้นสุด


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
Gilles 'หยุดชั่วร้าย'

10

ชุดของอัลกอริธึมนับไม่ถ้วน นี่เป็นเพราะอัลกอริทึมแต่ละอันมีคำอธิบายที่ จำกัด บอกเป็นเครื่องทัวริง

ความจริงที่ว่าอัลกอริทึมมีคำอธิบายที่ จำกัด ช่วยให้เราสามารถป้อนอัลกอริทึมหนึ่งไปยังอีกและนี่คือพื้นฐานของทฤษฎีการคำนวณ มันช่วยให้เรากำหนดปัญหาการหยุดชะงักตัวอย่างเช่น


7

อย่างน้อยจำนวนกลวิธีต่อเนื่องในการเข้าถึงปัญหาที่เฉพาะเจาะจง

"ต่อเนื่อง" อาจจะหมายถึงตัวเลขจริง ... การใช้ "อย่างน้อย" พร้อมกับคำนั้นไร้สาระเหนือชั้น เป็นคนปากต่อปาก: อนันต์นับได้ค่อนข้างใหญ่ แต่ไม่มีที่สิ้นสุดนับไม่ได้ ... ใหญ่กว่าใหญ่ ยิ่งกว่านั้นอีก unfathomably

งั้นลองโยนมันออกไปนอกหน้าต่าง หากต้องการดูว่าเรากำลังเผชิญกับอินฟินิตี้ประเภทใดก็คือความเรียบง่ายแบบตายตัว (และใช้งานง่ายแม้ว่าเพื่อนของคุณจะไม่เคยได้ยินวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี):

  • อัลกอริทึมใด ๆ สามารถใช้กับภาษาทัวริงที่สมบูรณ์ เลือกพิษที่คุณชื่นชอบของภาษาในโลกแห่งความเป็นจริง (Java, C, ... ) เพื่อกำจัดความลึกลับนี้เล็กน้อย ทั้งหมดนี้เทียบเท่ากับชุดอัลกอริธึมทางทฤษฎีที่ทุกคนคิดได้ โปรดทราบว่าอัลกอริธึมทุกตัวมี จำกัด เช่นไม่มีอัลกอริธึมที่จะใช้สัญลักษณ์มากมายในการเขียน
  • อย่าคิดถึงเครื่องจักรทัวริงที่ซับซ้อน ภาษาที่คุณเลือกใช้ไฟล์ง่าย ๆ ในการจัดเก็บซอร์สโค้ด ทุกไฟล์คือชุดของจำนวนน้อย (aka, ไบต์) สิ่งสำคัญคือตัวเลขเหล่านี้เป็นจำนวนเต็มแน่นอนที่สุดไม่ต่อเนื่อง (ถ้าคุณเป็นคนเจ้าระเบียบและต้องการที่จะอยู่ในระบอบทฤษฎีแทนที่คำว่า "byte" ด้วย "symbol" มันจะไม่เปลี่ยนแปลงอะไรเลย)ถ้าคุณกลัวโปรแกรมขนาดใหญ่ที่กระจายอยู่ในหลาย ๆ ไฟล์ (และไลบรารี่ และสิ่งอื่น ๆ ) จากนั้นเพียงบีบอัดไฟล์เหล่านั้นลงในไฟล์เก็บถาวรที่บีบอัดไฟล์เดียว (เช่นไฟล์เดียว)
  • ตอนนี้คุณสามารถกำหนดเลขจำนวนเต็มเดียวให้กับไฟล์ทุกไฟล์ที่นั่นแบบ bijectively เราเพียงเขียนระเบียบทั้งหมดของบิต / ไบต์ของไฟล์ทีละไฟล์และจบลงด้วยตัวเลขจำนวนมากที่แสดงในไบนารี ในอดีตอันไกลโพ้นผู้คนทำอย่างนั้นจริง ๆ : พวกเขาพิมพ์โปรแกรมฐานสองแบบคอมไพล์เป็นรายการเลขฐานสิบหกยาวในนิตยสาร; คุณจะพิมพ์ลงใน แต่ไม่เคยเห็นพวกเขาเป็นอะไรมากกว่าตัวเลข (มักจะจัดกลุ่มสะดวกในชุด 8- หรือ 16 หลักเพื่อให้การพิมพ์ง่ายขึ้น)
  • ดังนั้น: ทุกโปรแกรมสามารถแสดงเป็นจำนวนเต็มแม้ว่าจะมีขนาดใหญ่โดยพลการ วิธีการปัดเศษอีกวิธีหนึ่งก็ใช้ได้เช่นกัน - จำนวนเต็มทุกตัวสามารถถ่ายโอนลงในไฟล์ได้ทันทีและอย่างไม่น่าเชื่อและโยนไปที่คอมไพเลอร์ (เห็นได้ชัดว่ามีเพียงส่วนเล็ก ๆ เท่านั้นที่จะเป็นโปรแกรมที่ใช้ได้
  • ในที่สุดโปรแกรมและอัลกอริธึมก็เป็นเซตย่อยของจำนวนเต็ม ดังนั้นมีเพียงจำนวนมากเท่านั้นที่มีอยู่
  • NB, ความจริงที่ว่ามีการใช้งานที่แตกต่างกันมากมายของอัลกอริทึมเดียวอยู่ในความโปรดปรานของเรานั่นคือจำนวนเต็มจำนวนมากรวมตัวกันเป็นอัลกอริทึมเดียวกัน (การเป็นตัวแทนที่แตกต่างกัน) ดังนั้นถ้าอินฟินิตี้นับไม่ได้เป็นอินฟินิตี้ที่เล็กที่สุดแล้วเราจะต้องกังวลเกี่ยวกับจำนวนอัลกอริธึมที่เล็กกว่า แต่แน่นอนไม่ใหญ่กว่า (กล่าวคือนับไม่ได้)

ปัญหาเฉพาะคือกลยุทธ์การซื้อขาย (ไม่ใช่อัลกอริทึม แต่กลยุทธ์)

ฉันไม่รู้ว่าเพื่อนของคุณมีความหมายอย่างไรกับ "กลยุทธ์" ฉันคิดว่าเขาหมายถึงบางสิ่งบางอย่างที่เป็นเหมือนอัลกอริทึม แต่ไม่ได้มีรายละเอียดเพียงพอที่จะแฮ็กข้อมูลลงในคอมพิวเตอร์ หรืออย่างใดขึ้นอยู่กับ "สัญชาตญาณ" ของมนุษย์ในระหว่างการดำเนินการ? ถ้าเป็นเช่นนั้นนี่เป็นเพียงรายละเอียดที่ไม่เกี่ยวข้อง มนุษยชาติยังไม่พบคำอธิบายใด ๆ ของกระบวนการที่มีประสิทธิภาพหรือใหญ่กว่า "อัลกอริธึม" ในแง่ที่เราใช้ใน CS


3
Re: "'Continuum' น่าจะหมายถึงตัวเลขที่แท้จริง ... โดยใช้ 'อย่างน้อย' พร้อมกับคำนั้นอย่างไร้เหตุผลเหนือ": ไม่มีอะไร "เหนือ" เกี่ยวกับมันให้อยู่คนเดียว "ไร้เหตุผล" ดังนั้น . มีจำนวนจริงมากกว่าจำนวนจริงดังนั้นจึงเป็นเรื่องปกติที่จะพูดคุยเกี่ยวกับฉากที่มีขนาดใหญ่กว่าความต่อเนื่อง
ruakh

6

ดู Gödel Numberingมันเป็นข้อเท็จจริงพื้นฐานในวิทยาการคอมพิวเตอร์ที่อัลกอริธึมนั้นนับได้เช่นเดียวกับการขยายชุดที่นับซ้ำได้

อัลกอริทึมที่นับได้มันง่ายที่จะแสดงว่าไม่มีอัลกอริทึมในการตรวจสอบทุกชุดในระบบที่เป็นทางการ (กำหนดค่าความจริงให้กับปัญหา) สิ่งนี้จะเทียบเท่ากับการกำหนดอัลกอริทึมให้กับทุกฟังก์ชั่นการแมปชุดของปัญหากับค่าบูลีน อย่างไรก็ตามชุดของฟังก์ชั่นเหล่านี้ไม่สามารถนับได้ (เล็กน้อยของ cardinality เดียวกับชุดพลังงานของชุดของปัญหาจึงนับไม่ได้)

ฉันหวังว่านี่จะให้สัญชาตญาณว่าทำไมอัลกอริธึมจึงต้อง "มีพลังน้อยกว่า" มากกว่าแค่ฟังก์ชั่นใด ๆ นับได้อย่างนั้น


2

หากไม่ได้เริ่มต้นด้วยข้อกำหนดที่กลยุทธ์จำเป็นต้องนำไปใช้กับอัลกอริทึมและละเว้นผลกระทบจากการแยกย่อยในชีวิตจริงตัวอย่างเช่นสามารถยอมรับต่อไปนี้เป็นกลยุทธ์การซื้อขายแบบกำหนดพารามิเตอร์:

abab

ab


0

หากเรานึกถึงอัลกอริธึมในฐานะโปรแกรมคอมพิวเตอร์ที่เขียนด้วยเลขฐานสอง * จำนวนอัลกอริธึมคือจำนวนของเลขฐานสอง (จำนวนเต็ม) ดังนั้นความสำคัญของอัลกอริธึมจึงเป็นความสำคัญของจำนวนเต็ม

* หลักฐานที่แสดงว่าเครื่องทัวริงสามารถเรียกใช้อัลกอริธึมทั้งหมดและคอมพิวเตอร์สามารถเรียกใช้โปรแกรมทัวริงเครื่องใดก็ได้ อดีตอาจขึ้นอยู่กับคำจำกัดความของอัลกอริทึม แต่ฉันไม่คิดว่าคุณกำลังใช้กลยุทธ์การซื้อขายที่ไม่สามารถคำนวณได้


1
สิ่งนี้จะเพิ่มคำตอบที่มีอยู่?
David Richerby

"หลักฐานที่แสดงว่าเครื่องทัวริงสามารถเรียกใช้อัลกอริธึมทั้งหมด ... จะทำให้คำตอบนี้ยาวโดยไม่จำเป็น" มันจะทำให้คำตอบเป็นไปไม่ได้เนื่องจากคุณไม่สามารถพิสูจน์วิทยานิพนธ์ทัวริสตจักรที่
John Coleman

@DavidRicherby มันเพิ่มความกระชับ
user558317

1
@ JohnColeman ยืนยันความเป็นไปไม่ได้ของการพิสูจน์โดยไม่มีข้อพิสูจน์? ฉันหมายถึงก) OP อาจจะไม่สนใจเนื่องจากข) มันเป็นเรื่องของความหมาย คำถามดูเหมือนจะมีข้อสันนิษฐานว่า: "เนื่องจากเครื่องทัวริงทำงานด้วยชุดตัวอักษรที่ จำกัด และเทปจะต้องสามารถจัดทำดัชนีได้นับได้จึงเป็นไปไม่ได้ที่จะมีอัลกอริธึมนับไม่ได้"
558317

0

คำตอบอื่น ๆ ได้อธิบายแล้วว่าในรูปแบบมาตรฐานของการคำนวณ (เครื่องทัวริงแลมบ์ดาแลมบ์ดา ฯลฯ ) ชุดอัลกอริธึมนับไม่ถ้วน

อย่างไรก็ตามมีแบบจำลองทางทฤษฎีอื่น ๆ ในการคำนวณซึ่งชุดของอัลกอริทึมนั้นไม่มีที่สิ้นสุดนับไม่ถ้วน ตัวอย่างเช่นเครื่องจักรBlum – Shub – Smaleมีชุดคำสั่งที่ไม่มีที่สิ้นสุดนับ1ดังนั้นชุดของอัลกอริธึมจึงไม่มีที่สิ้นสุดนับไม่ถ้วน


1เพื่อให้แม่นยำชุดคำสั่งนั้นมี จำกัด แต่มันถูกแปรสภาพโดยใช้ชุดที่ไม่สิ้นสุดนับไม่ถ้วน (ฟังก์ชั่นที่มีเหตุผล)


ฟังก์ชันเหตุผลไม่สามารถนับได้ใช่หรือไม่
Ben Millwood

@BenMillwood คุณสามารถร่างหลักฐานสั้น ๆว่าเหตุใดจึงเป็นเช่นนี้?
ทำเครื่องหมาย C

x0Rf:xx0

โอ้ฉันคิดว่าค่าคงที่ก็ต้องมีเหตุผลด้วย ไม่เป็นไรแล้ว
Ben Millwood

-1

เนื่องจากเครื่องจักรทัวริงทำงานด้วยชุดตัวอักษรที่ จำกัด และเทปจะต้องสามารถจัดทำดัชนีได้จึงนับได้

ด้วยขนาดที่เฉพาะเจาะจงมีเครื่องจักรทัวริงจำนวน จำกัด และมีหลายขนาดนับไม่ถ้วน ชุดตัวเลขที่นับได้ซึ่งมีขอบเขต จำกัด นับได้ ขนาดของตัวอักษรเป็นปัจจัยในจำนวนของเครื่องจักรทัวริง แต่ขนาดของเทปไม่ใช่ หากตัวอักษรได้รับอนุญาตให้มีจำนวนตัวละครนับไม่ถ้วนแล้วก็จะมีเครื่องจักรมากมายนับไม่ถ้วน (แต่ละจำนวนจริงสามารถเข้ารหัสเป็นลำดับของสัญลักษณ์)

0.50.5


n

และมันหมายความว่าอย่างไรที่มีอัลกอริธึมมากมายนับไม่ถ้วน คุณสามารถเขียนลงได้มากมาย มีความหมายอะไรที่คุณไม่สามารถจดอัลกอริทึมได้?
David Richerby

@ DavidRicherby ใช่ฉันมีบางอย่างปะปนอยู่ แต่เราสามารถใช้ "อัลกอริทึม" ในความหมายทั่วไปเพื่ออ้างถึงลำดับของตัวเลือก และในแง่นั้นการเลือกตัวเลขตามอินพุตนั้นเป็น "อัลกอริธึม" แม้ว่าจะไม่ใช่เครื่องคำนวณ
สะสม

ในวิทยาการคอมพิวเตอร์ "อัลกอริทึม" และ "คำนวณ" เป็นสิ่งเดียวกัน อัลกอริทึมเป็นเครื่องทัวริง
David Richerby
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.