คำถามติดแท็ก loops

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

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

3
เหตุใดลูปจึงเร็วกว่าการเรียกซ้ำ
ในทางปฏิบัติฉันเข้าใจว่าการเรียกซ้ำใด ๆ สามารถเขียนเป็นลูป (และในทางกลับกัน (?)) และหากเราวัดด้วยคอมพิวเตอร์จริงเราพบว่าลูปนั้นเร็วกว่าการเรียกซ้ำสำหรับปัญหาเดียวกัน แต่มีทฤษฎีอะไรที่ทำให้เกิดความแตกต่างนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.