เชื่อมช่องว่างระหว่างเครื่องนามธรรมกับความปวดคอมพิวเตอร์? [ปิด]


11

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


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

2
@amon ดูเหมือนว่าคุณได้เขียนคำตอบส่วนใหญ่แล้วทำไมปล่อยให้ "ไปเสีย" ในความคิดเห็น

ตามที่คนอื่น ๆ ชี้ให้เห็นมีหลายแบบจำลองทางคณิตศาสตร์สำหรับ "คอมพิวเตอร์": บางคนใกล้ชิดกับภาษา (ฟังก์ชั่น recursive บางส่วนแลมบ์ดาแคลคูลัส) บางคนใกล้ชิดกับฮาร์ดแวร์ หากคุณต้องการคุณควรดูที่เครื่อง RAM ( ลิงค์ Wikipedia ): พวกเขาอยู่ใกล้กับฮาร์ดแวร์จริงมากกว่าเครื่องทัวริง
Lorenzo Dematté

คำตอบ:


23

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

  • สิ่งที่สามารถคำนวณได้
  • ระดับความซับซ้อนของปัญหา
  • ความสัมพันธ์ระหว่างคลาสที่ซับซ้อน
  • ความเท่าเทียมกันของวิธีต่างๆในการคำนวณบางอย่าง

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

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

ดังนั้นทั้งสองวิธีจึงมีความเป็นไปได้สูง นอกจากนี้ทั้งสองอยู่ในสาขาวิทยาศาสตร์คอมพิวเตอร์พวกเขาไม่ได้มีอะไรเกี่ยวข้องกันมากนัก


1
ขอบคุณ แต่ฉันพบ " เครื่องจักรทัวริงและเครื่องจักรทัวริงสากลที่มีความคล้ายคลึงกับเครื่องเสมือน " ซึ่งอาจแนะนำความสัมพันธ์ของพวกเขา แต่ไม่มีรายละเอียด
ทิม

4
@Tim ฉันคิดว่าแน่นอนว่าการใช้เครื่องจักรทัวริงเป็นจุดเริ่มต้นในการแนะนำแนวคิดของเครื่องนามธรรมจากนั้นก็ย้ายไปยังเครื่องนามธรรมที่มีประโยชน์มากขึ้นอย่างรวดเร็ว

4

ความสัมพันธ์หลักคือคุณสามารถจำลองโครงสร้างทางทฤษฎีในทางกายภาพ

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

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

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

ขณะนี้ผู้คนกำลังทำการวิเคราะห์และทดสอบแบบจำลองทางทฤษฎีที่เรียกว่า "Quantum Turing Machine" เพื่อดูว่าเครื่องอำนวยความสะดวกอะไรบ้างที่สามารถใช้ได้กับเครื่องคำนวณควอนตัม มันสมเหตุสมผลที่ผู้คนจะทำงานกับแบบจำลองเหล่านี้เมื่อแบบจำลองทางกายภาพของแบบจำลองของพวกเขามีทั้งการใช้งานที่มีราคาแพงมากหายากและในปัจจุบันยังขาดอยู่มาก แบบจำลองเชิงทฤษฎีใช้เพื่อแสดงว่าเราสามารถทำอะไรได้บ้างเมื่อการปรับใช้ทางกายภาพของเราดีขึ้น


1

พวกมันมีความสัมพันธ์กันในลักษณะเดียวกับที่กระสวยอวกาศมีความสัมพันธ์กับบอลลูนที่คุณพองลมหายใจจากนั้นก็ปล่อยมือจากและมองดูแมลงวัน

หลักการพื้นฐานของการขับไล่บางสิ่งในทิศทางเดียวเพื่อขับเคลื่อนบางสิ่งในทิศทางตรงกันข้ามคือมี

นั่นคือสิ่งที่ความคล้ายคลึงกันสิ้นสุดลง


1

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


1

สิ่งสำคัญคือต้องรู้ว่าคำจำกัดความของการคำนวณไม่ใช่ "สิ่งที่คอมพิวเตอร์ทำ" การคำนวณมาก่อนคอมพิวเตอร์ คอมพิวเตอร์ได้รับชื่อของพวกเขาเพราะพวกเขาถูกสร้างขึ้นเพื่อช่วยงานการคำนวณไม่ใช่เพราะพวกเขากำหนด

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

เครื่องทัวริงจึงทำสองสิ่งที่สำคัญมาก:

  1. จัดเตรียมการทดสอบความสามารถในการคำนวณของปัญหา / งานใด ๆ
  2. จัดเตรียมการทดสอบระบบใด ๆ เพื่อแสดงว่าสามารถคำนวณงานใด ๆ ที่คำนวณได้หรือไม่

ประเด็นแรกช่วยให้เราสามารถคิดเกี่ยวกับปัญหาต่าง ๆ โดยไม่ถูกรบกวนจากการใช้งานจริง สิ่งนี้เป็นสิ่งที่ดีเพราะฮาร์ดแวร์จริงมักจะทำให้ผู้คนสนใจรายละเอียดที่ไม่เกี่ยวข้อง (เช่น "เกิดอะไรขึ้นถ้าเรามีหน่วยความจำไม่เพียงพอหรือพื้นที่เก็บข้อมูล?" เนื่องจาก Turing Machines มีทรัพยากรที่ไม่สิ้นสุด) วิธีแก้ปัญหาเชิงทฤษฎีที่พิสูจน์ได้สามารถพัฒนาขึ้นสำหรับเครื่องทัวริงแล้วทุกคนต้องทำคือแปลมันเป็นสิ่งที่จะทำงานบนสถาปัตยกรรมที่กำหนด

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

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

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


-1

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

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

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

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

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


ในที่สุดความแตกต่างที่สำคัญระหว่างสถาปัตยกรรมและเครื่องจักรที่เป็นนามธรรมคือสถาปัตยกรรมมักเกี่ยวข้องกับประสิทธิภาพ สถาปัตยกรรมต้องการทราบว่าคุณสามารถทำอะไรได้อย่างรวดเร็ว เครื่องบทคัดย่อมักจะเป็นเนื้อหาที่เพิ่งรู้ว่าคุณสามารถ พิจารณาUniversal Constructor ที่พัฒนาขึ้นสำหรับเครื่องของ von Neuman มันเพียงพอที่จะพิสูจน์ได้ว่า UC สามารถทำงานได้ไม่ต้องกังวลว่าผู้เขียนไม่เคยมีพลังในการคำนวณเพียงพอที่จะมองเห็นมันได้

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


1
ตัวอย่างการให้เหตุผลของคุณไม่ถูกต้องทางเทคนิค - หากคุณระบุว่าเครื่องทัวริงสามารถทำทุกอย่างที่เครื่องลงทะเบียนหรือ x86 mahine สามารถไม่ได้หมายความว่าเครื่อง x86 สามารถทำทุกอย่างที่เครื่องลงทะเบียนหรือเครื่องทัวริง สามารถ. ในฐานะที่เป็นตัวอย่าง, หุ่นยนต์ จำกัด ใด ๆ สามารถลดลงเป็นเครื่องทัวริง แต่เห็นได้ชัดว่าไม่เท่ากับแคลคูลัสแลมบ์ดาหรือ LISP ทิศทางเรื่อง - หากคุณต้องการระบุ "กล่อง x86 ของฉันสามารถทำอะไรก็ได้ที่เครื่อง LISP ของคุณสามารถทำได้" จากนั้นก็ต้องลดทอนจากทัวริงเป็น x86 ไม่ใช่จาก x86 ถึงทัวริง
Peteris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.