คำถามติดแท็ก turing-completeness

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

9
เหตุใดภาษาการเขียนโปรแกรมบางภาษาจึงทัวริงสมบูรณ์ แต่ขาดความสามารถบางอย่างของภาษาอื่น
ฉันพบปัญหาแปลก ๆ เมื่อเขียนล่ามที่ (ควร) hooks ไปยังโปรแกรม / ฟังก์ชั่นภายนอก: ฟังก์ชั่นใน 'C' และ 'C ++' ไม่สามารถขอฟังก์ชั่นแปรผันได้เช่นฉันไม่สามารถสร้างฟังก์ชั่นที่เรียกว่า 'printf' ด้วยอาร์กิวเมนต์เดียวกันที่แน่นอนที่ได้รับและแทนที่จะต้องเรียกใช้เวอร์ชันอื่นที่ใช้วัตถุแปรปรวน นี่เป็นปัญหาอย่างมากเนื่องจากฉันต้องการสร้างวัตถุที่มีตะขอที่ไม่ระบุชื่อ ดังนั้นฉันคิดว่านี่แปลกตั้งแต่Forth , JavaScriptและบางทีภาษาอื่น ๆ สามารถทำได้อย่างง่ายดายโดยไม่ต้องหันไปใช้ภาษาแอสเซมบลี / รหัสเครื่อง เนื่องจากภาษาอื่นสามารถทำสิ่งนี้ได้อย่างง่ายดายนั่นหมายความว่าระดับของปัญหาที่แต่ละภาษาโปรแกรมสามารถแก้ไขได้แตกต่างกันไปตามภาษาแม้ว่าภาษาเหล่านี้จะทัวริงสมบูรณ์หรือไม่

9
C ทัวริงสมบูรณ์จริงหรือ
ฉันพยายามอธิบายให้คนที่ C เข้าใจว่าทัวริงสมบูรณ์และรู้ว่าจริง ๆ แล้วฉันไม่รู้ว่ามันเป็นเทคนิคทัวริงสมบูรณ์หรือไม่ (C เช่นเดียวกับในความหมายที่เป็นนามธรรมไม่เหมือนกับการใช้งานจริง) คำตอบ "ชัดเจน" (คร่าวๆ: มันสามารถระบุจำนวนหน่วยความจำโดยพลการเพื่อให้สามารถเลียนแบบเครื่องแรมดังนั้นจึงเป็นทัวริงสมบูรณ์) ไม่ถูกต้องจริงเท่าที่ฉันสามารถบอกได้แม้ว่ามาตรฐาน C อนุญาต สำหรับ size_t ที่จะมีขนาดใหญ่โดยพลการนั้นจะต้องได้รับการแก้ไขในบางความยาวและไม่ว่าจะมีการแก้ไขความยาวเท่าใดที่มันยังคง จำกัด (กล่าวอีกนัยหนึ่งถึงแม้ว่าคุณจะได้รับเครื่องทัวริงหยุดโดยพลการเลือกขนาด size_t ซึ่งมันจะทำงาน "ถูกต้อง" แต่ก็ไม่มีทางเลือกขนาด size_t ซึ่งเครื่องทัวริงทัวริงทั้งหมดจะทำงานอย่างถูกต้อง) ดังนั้น: C99 ทัวริงเสร็จสมบูรณ์?

5
ทัวริงสมบูรณ์หมายถึงอะไร
ฉันเห็นว่าคำจำกัดความส่วนใหญ่ของสิ่งที่จะเป็นทัวริงที่สมบูรณ์นั้นเป็นเรื่องธรรมดาจนถึงระดับหนึ่ง ตัวอย่างเช่นหากคุณ Google "สิ่งที่ทำให้ทัวริงสมบูรณ์หมายถึง" คุณจะได้รับ: คอมพิวเตอร์ทัวริงสมบูรณ์หากสามารถแก้ปัญหาที่เครื่องทัวริงสามารถ ... ในขณะที่มันถูกกำหนดไว้เป็นอย่างดีว่าระบบต่าง ๆ ของทัวริงสมบูรณ์หรือไม่ แต่ฉันไม่ได้เห็นคำอธิบายถึงความหมาย / ผลที่ตามมาของการทำทัวริงให้สมบูรณ์ เครื่องจักรทัวริงทำอะไรได้บ้างโดยที่ไม่มีเครื่องที่ไม่ใช่ทัวริงที่สามารถทำงานแบบเดียวกันได้ ตัวอย่างเช่นคอมพิวเตอร์สามารถทำการคำนวณแบบง่าย ๆ ได้เช่น(1+5)/3=?กัน แต่เครื่องคิดเลขธรรมดาก็สามารถทำได้เช่นกันซึ่งไม่ใช่การทัวริงที่สมบูรณ์หากฉันถูกต้อง มีวิธีในการกำหนดความสามารถของทัวริงโดยไม่ต้องพูดว่า "การจำลองเครื่องทัวริงอื่น" ได้หรือไม่?

5
ภาษาปกติสามารถทัวริงได้หรือไม่
ฉันกำลังอ่านเกี่ยวกับIota และ Jotและพบว่าส่วนนี้ทำให้เกิดความสับสน: ซึ่งแตกต่างจาก Iota ที่ต้นไม้ syntactic สำหรับสตริงสามารถแยกทั้งทางด้านซ้ายหรือด้านขวาไวยากรณ์ Jot เป็นซ้าย - กิ่งเหมือนกัน เป็นผลให้ Iota ไม่มีบริบทอย่างเคร่งครัด แต่ Jot เป็นภาษาปกติ ความเข้าใจของฉันคือทั้ง Iota และ Jot เป็นทัวริงที่สมบูรณ์ แต่เห็นได้ชัดว่าอย่างใดอย่างหนึ่งไม่มีบริบทและอื่น ๆ เป็นปกติ! แน่นอนว่าภาษาปกติไม่สามารถทำให้ทัวริงสมบูรณ์

7
ภาษาทัวริงทั้งหมดล้วนใช้แทนกันได้
หมายเหตุในขณะที่ฉันรู้วิธีการเขียนโปรแกรมฉันค่อนข้างเป็นผู้เริ่มต้นในทฤษฎี CS ตามคำตอบนี้ ทัวริงสมบูรณ์เป็นแนวคิดนามธรรมของการคำนวณ หากภาษาทัวริงสมบูรณ์แล้วก็สามารถทำการคำนวณใด ๆ ที่ภาษาทัวริงอื่น ๆ สามารถทำได้ และโปรแกรมที่เขียนด้วยภาษาทัวริงที่สมบูรณ์สามารถเขียนใหม่ในภาษาอื่นได้ ตกลง. มันสมเหตุสมผลแล้ว ฉันสามารถแปล (คอมไพล์) C เป็นแอสเซมบลี (และฉันทำมันทุกวัน!) และสามารถแปลแอสเซมบลีเป็น C (คุณสามารถเขียนเครื่องเสมือนใน C) และเช่นเดียวกันกับภาษาอื่น ๆ - คุณสามารถรวบรวมภาษาใด ๆ ในแอสเซมบลีแล้วเรียกใช้ใน VM ที่เขียนในภาษาอื่น แต่สามารถใด ๆโปรแกรมที่เขียนในภาษาทัวริงสมบูรณ์นำมาเขียนใหม่อีก? เกิดอะไรขึ้นถ้าสมัชชาของฉันมี opcode LIGHTBUTTON? ฉันไม่สามารถเลียนแบบภาษานั้นในระบบ (ภาษา) โดยไม่ใช้หลอดไฟ ตกลง. คุณจะบอกว่าเนื่องจากเรากำลังเผชิญกับทฤษฎีคอมพิวเตอร์เราไม่ได้พูดถึงข้อ จำกัด ของอุปกรณ์ทางกายภาพ แต่ถ้าเป็นอุปกรณ์ที่ไม่มีการคูณล่ะ แผนก? เพื่อความรู้ที่ดีที่สุดของฉัน (แม้ว่านี่จะเป็นคำถามสำหรับคณิตศาสตร์.) เราไม่สามารถเลียนแบบการคูณ (และไม่หารแน่นอน) ด้วยการบวกและการลบ [1] ดังนั้น …

1
ลูป do-while เพียงพอสำหรับทัวริงครบถ้วนหรือไม่
ฉันรู้ว่าในภาษาการเขียนโปรแกรมที่จำเป็นห่วงในขณะที่ทำก็เพียงพอในการสร้างโฟลว์การควบคุมเพื่อสร้างภาษาทัวริงที่สมบูรณ์ (เท่าที่โฟลว์การควบคุมดำเนินไป . ส่วนสำคัญของคำถามของฉันคือ: วนรอบในขณะที่ทำมีอำนาจการคำนวณเช่นเดียวกับวนรอบขณะทำ? กล่าวอีกนัยหนึ่งคือภาษาทัวริงจะสมบูรณ์หากไม่สามารถข้ามคำแนะนำทั้งหมดได้ ฉันรู้ว่าความหมายบางอย่างของที่นี่อาจจะคลุมเครือเล็กน้อยดังนั้นขอให้ฉันวลีคำถามจริงด้วยตัวอย่างเฉพาะ: Brainfuck (BF) เป็น Turing tarpit ที่มีการควบคุมการไหลเพียงลูปแบบ while-do ซึ่งแสดงว่า[...](มีสเป็คภาษาสมบูรณ์ที่ด้านล่างของคำถามในกรณีที่คุณไม่คุ้นเคยกับ Brainfuck) ลองกำหนด * ภาษา BF ใหม่ที่,.+-<>มีความหมายเช่นเดียวกับใน BF แต่แทนที่จะ[]เรามี{}ซึ่งหมายถึงการทำในขณะที่ห่วง นั่นคือความแตกต่างเพียงอย่างเดียวของ BF คือว่าทุกลูปจะถูกดำเนินการอย่างน้อยหนึ่งครั้งก่อนที่จะข้ามการทำซ้ำต่อไป BF * ทัวริงเสร็จสมบูรณ์หรือไม่ ถ้าเป็นเช่นนั้นฉันจะสนใจว่าฉันจะแปล BF เป็น BF * ได้อย่างไร ถ้าไม่ใช่ฉันจะพิสูจน์ได้อย่างไร ข้อสังเกตของฉัน: ไม่ใช่ทุกโปรแกรม BF ที่สามารถแปลเป็น BF * ตัวอย่างเช่นเป็นไปไม่ได้ที่จะเขียนโปรแกรมใน BF * ซึ่งอาจจะหรืออาจไม่อ่านหรือพิมพ์ค่า - หากโปรแกรมอาจพิมพ์ค่าหนึ่งค่าหรือมากกว่านั้นมันจะพิมพ์อย่างน้อยหนึ่งค่าเสมอ อย่างไรก็ตามอาจมีชุดย่อยของทัวริงที่สมบูรณ์ซึ่งสามารถแปลเป็น BF …

5
เหตุใดภาษาการใช้งานทัวริงจึงสมบูรณ์
บางทีความเข้าใจที่ จำกัด ของฉันในเรื่องไม่ถูกต้อง แต่นี่คือสิ่งที่ฉันเข้าใจจนถึง: ฟังก์ชั่นการเขียนโปรแกรมมีพื้นฐานมาจากแลมบ์ดาแคลคูลัสสูตรโดยโบสถ์อลองโซ การโปรแกรมเชิงซ้อนนั้นขึ้นอยู่กับโมเดลเครื่องจักรทัวริงซึ่งผลิตโดย Alan Turing นักเรียนของศาสนจักร แลมบ์ดาแคลคูลัสนั้นทรงพลังและสามารถเป็นเครื่องทัวริงได้ซึ่ง หมายความว่าพวกมันเทียบเท่ากับกำลังในการคำนวณ หากการเขียนโปรแกรมใช้งานได้นั้นมีพื้นฐานมาจากแลมบ์ดาแคลคูลัสไม่ใช่เครื่องทัวริงทำไมบางคน (หรือทั้งหมด) อธิบายว่าทัวริงสมบูรณ์ไม่ใช่แลมบ์ดาสมบูรณ์หรืออะไรแบบนั้น? คำว่า "ทัวริงสมบูรณ์" เป็นพิเศษในทางใด ๆ ที่ทัวริงเครื่องจักรหรือเป็นเพียงคำ? สุดท้ายถ้าภาษาที่จำเป็นนั้นใช้ภาษาทัวริงและคอมพิวเตอร์นั้นเป็นเครื่องทัวริงที่ไม่มีหน่วยความจำไม่สิ้นสุดหมายความว่าภาษาเหล่านั้นทำงานได้ดีกว่าภาษาโปรแกรมที่ใช้งานได้บนพีซีที่ทันสมัยของเราหรือไม่ หากเป็นเช่นนั้นแล้วอะไรคือสิ่งที่เทียบเท่ากับเครื่องแคลคูลัสแลมบ์ดา? ฉันรู้ว่านี่เป็นคำถามที่แยกกัน 3 คำถาม แต่พวกเขาทั้งหมดมีความสัมพันธ์กันอย่างใกล้ชิดและแต่ละคำถามขึ้นอยู่กับคำถามก่อนหน้าว่าเป็นคำถามที่ถูกต้องที่จะเริ่มต้นด้วย


2
กฎ 110 ทัวริงสมบูรณ์อย่างไร
ฉันได้อ่านหน้าวิกิพีเดียสำหรับกฎ 110ในออโตมาตาเซลลูลาร์แล้วและฉันรู้ว่ามันทำงานได้อย่างไร (ชุดของกฎตัดสินใจที่จะวาด 1 หรือ 0 ถัดไป) ฉันเพิ่งอ่านว่าทัวริงสมบูรณ์ แต่ฉันไม่สามารถเข้าใจได้ว่าคุณจะ 'โปรแกรม' ใน 'กฎ 110' อย่างไร

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

2
อะไรทำให้ทัวริงทัวริงสมบูรณ์
ฉันรู้ว่ามันสามารถพิสูจน์ได้ว่า PROLOG นั้นเสร็จสมบูรณ์โดยการสร้างโปรแกรมที่จำลองเครื่องทัวริงดังนี้: turing(Tape0, Tape) :- perform(q0, [], Ls, Tape0, Rs), reverse(Ls, Ls1), append(Ls1, Rs, Tape). perform(qf, Ls, Ls, Rs, Rs) :- !. perform(Q0, Ls0, Ls, Rs0, Rs) :- symbol(Rs0, Sym, RsRest), once(rule(Q0, Sym, Q1, NewSym, Action)), action(Action, Ls0, Ls1, [NewSym|RsRest], Rs1), perform(Q1, Ls1, Ls, Rs1, Rs). symbol([], b, []). …

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

1
มีปัญหาที่สมบูรณ์สำหรับชั้นเรียนของทัวริงที่ตัดสินใจได้หรือไม่?
ภาษาเช่นนั้นเสร็จสมบูรณ์อีกครั้งภายใต้การลดจำนวนครั้งเดียว มันไม่สำคัญที่จะเห็นว่าco-REมีปัญหาที่สมบูรณ์เช่นกัน เอส Schmitz [1]พิจารณาบางชั้นเรียน inbetween ELEMและถ่ายภาพ พวกเขานำเสนอปัญหาที่สมบูรณ์สำหรับคลาสเหล่านี้ภายใต้การลดที่สร้างขึ้นโดยเฉพาะHALTTMHALTTM\text{HALT}_{TM}RE-completeRE-complete\textsf{RE-complete}co-REco-RE\text{co-RE}ELEMELEM\text{ELEM}RECREC\text{REC} มีปัญหาที่สมบูรณ์สำหรับ (aka REC ) ที่สัมพันธ์กับการลดลงที่อ่อนแอกว่าหรือไม่? การลดขนาดของทัวริงนั้นไม่เหมาะสมเพราะพวกเขาสามารถทำงานทั้งหมดได้ เราควรคาดหวังว่าการลดลงดังกล่าวจะได้รับการวางแผนหรือไม่เช่นนั้น ( เช่นการลดหลายรายการที่ จำกัด เฉพาะการเรียกซ้ำแบบดั้งเดิม)R=RE∩co-RER=RE∩co-RE\textsf{R} = \textsf{RE} \cap \textsf{co-RE}RECREC\textsf{REC} [1] ลำดับชั้นซับซ้อน Sylvain Schmitz นอกเหนือจากประถมศึกษาปี 2013 http://arxiv.org/abs/1312.5686

2
ฟังก์ชั่นการสั่งซื้อที่สูงขึ้นนั้นให้พลังกับการเขียนโปรแกรมฟังก์ชั่นมากกว่าหรือไม่?
ผมเคยถามคำถามที่คล้ายกันใน cstheory.SE ตามคำตอบเกี่ยวกับเรื่องนี้ Stackoverflowมีขั้นตอนวิธีว่าในวันที่ไม่ได้ขี้เกียจบริสุทธิ์ภาษาเขียนโปรแกรมการทำงานมีความซับซ้อนในขณะที่วิธีเดียวกันในการเขียนโปรแกรมที่จำเป็นคือΩ ( n ) เพิ่ม lazyness ภาษา FP จะทำให้ขั้นตอนวิธีΩ ( n )Ω ( n บันทึกn )Ω(nlog⁡n)\Omega(n \log n)Ω ( n )Ω(n)\Omega(n)Ω ( n )Ω(n)\Omega(n) มีความสัมพันธ์ที่เท่าเทียมกันเปรียบเทียบภาษา FP กับและไม่มีฟังก์ชั่นการสั่งซื้อที่สูงขึ้นหรือไม่ ทัวริงยังสมบูรณ์อยู่หรือไม่? ถ้าเป็นเช่นนั้นการขาดลำดับที่สูงขึ้นของ FP จะทำให้ภาษามีประสิทธิภาพน้อยลงหรือมีประสิทธิภาพหรือไม่

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