วิทยาศาสตร์คอมพิวเตอร์

ถาม - ตอบสำหรับนักเรียนนักวิจัยและผู้ปฏิบัติงานด้านวิทยาการคอมพิวเตอร์

2
วิธีการใช้อัลกอริทึม AO *
ฉันสังเกตเห็นว่ามีการใช้โครงสร้างข้อมูลที่แตกต่างกันเมื่อเราใช้อัลกอริทึมการค้นหา ตัวอย่างเช่นเราใช้คิวเพื่อดำเนินการค้นหาอย่างกว้างแรกวางซ้อนเพื่อใช้การค้นหาเชิงลึกครั้งแรกและ min-heaps เพื่อใช้อัลกอริทึม A *อัลกอริทึม ในกรณีเหล่านี้เราไม่จำเป็นต้องสร้างแผนผังการค้นหาอย่างชัดเจน แต่ฉันไม่สามารถหาโครงสร้างข้อมูลที่ง่ายต่อการจำลองขั้นตอนการค้นหาของAO * อัลกอริทึม ฉันอยากรู้ว่าการสร้างแผนผังการค้นหาเป็นวิธีเดียวที่จะใช้อัลกอริทึม AO * หรือไม่ ใครช่วยให้ฉันมีการใช้งานที่มีประสิทธิภาพ?

3
ความแตกต่างระหว่าง“ ข้อมูล” และ“ ข้อมูลที่เป็นประโยชน์” ในทฤษฎีข้อมูลอัลกอริทึม
ตามที่Wikipedia : อย่างไม่เป็นทางการจากมุมมองของทฤษฎีข้อมูลอัลกอริทึมเนื้อหาข้อมูลของสตริงนั้นเทียบเท่ากับความยาวของการแสดงตัวเองที่สั้นที่สุดที่เป็นไปได้ของสตริงนั้น คำจำกัดความที่ไม่เป็นทางการของ "ข้อมูลที่เป็นประโยชน์" คืออะไร? เหตุใด "ข้อมูลที่เป็นประโยชน์" จึงไม่ถือเป็นแนวคิดที่เป็นธรรมชาติหรือพื้นฐานมากขึ้น ไร้เดียงสาดูเหมือนว่าสตริงสุ่มล้วนๆต้องมีข้อมูลเป็นศูนย์ดังนั้นฉันจึงพยายามที่จะเข้าใจความจริงที่ว่ามันถูกพิจารณาว่ามีข้อมูลสูงสุดตามคำจำกัดความมาตรฐาน

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

2
Decidablity ภาษา Grammars และ Automata
หมายเหตุนี่เป็นคำถามที่เกี่ยวข้องกับการเรียนในหลักสูตร CS ที่มหาวิทยาลัยไม่ใช่การบ้านและอยู่ที่นี่ภายใต้การสอบ Fall 2011 นี่คือคำถามสองข้อที่ฉันดูจากการสอบที่ผ่านมา พวกเขาดูเหมือนจะเกี่ยวข้องกันคนแรก: ปล่อย FINITECFG={&lt;G&gt;∣G is a Context Free Grammar with |L(G)|&lt;∞}FINITECFG={&lt;G&gt;∣G is a Context Free Grammar with |L(G)|&lt;∞}\qquad \mathrm{FINITE}_{\mathrm{CFG}} = \{ < \! G \! > \mid G \text{ is a Context Free Grammar with } |\mathcal{L}(G)|<\infty \} พิสูจน์ว่าเป็นภาษาที่ใช้งานได้ FINITECFGFINITECFG\mathrm{FINITE}_{\mathrm{CFG}} และ... ปล่อย FINITETM={&lt;M&gt;∣M is a …

2
การพิสูจน์ฮีปไบนารีมี
ฉันพยายามที่จะพิสูจน์ว่ากองไบนารีที่มี nodes มีออกจากใบเนื่องจากกองถูกสร้างขึ้นด้วยวิธีต่อไปนี้:nnn⌈n2⌉⌈n2⌉\left\lceil \frac{n}{2} \right\rceil แต่ละโหนดใหม่จะถูกแทรกผ่านขึ้นกรอง ซึ่งหมายความว่าแต่ละโหนดใหม่จะต้องสร้างที่ลูกที่มีอยู่ถัดไป สิ่งที่ฉันหมายถึงคือเด็ก ๆ จะถูกเลื่อนระดับจากซ้ายไปขวา ตัวอย่างเช่นฮีปต่อไปนี้: 0 / \ 1 2 จะต้องมีการสร้างตามลำดับนี้: 0, 1, 2 (ตัวเลขเป็นเพียงดัชนีพวกเขาไม่ได้บ่งชี้ถึงข้อมูลจริงที่เก็บอยู่ในโหนดนั้น) สิ่งนี้มีนัยสำคัญสองประการ: ไม่มีโหนดใดในระดับไม่มีระดับที่เต็มไปอย่างสมบูรณ์k+1k+1k+1kkk เนื่องจากเด็กถูกสร้างจากซ้ายไปขวาจึงไม่มี "ช่องว่าง" ระหว่างโหนดในระดับหรือสถานการณ์ดังต่อไปนี้: k+1k+1k+1 0 / \ 1 2 / \ \ 3 4 6 (นี่จะเป็นฮีปที่ผิดกฎหมายตามคำจำกัดความของฉัน) ดังนั้นวิธีที่ดีที่จะคิดว่าฮีปนี้คือการใช้อาเรย์ของฮีปที่ไม่สามารถมี "การข้าม" ในอาเรย์ของอาร์เรย์ได้ ดังนั้นฉันคิดว่าอุปนัยอาจเป็นวิธีที่ดีในการทำสิ่งนี้ ... บางทีบางสิ่งบางอย่างที่ต้องจัดการกับแม้แต่กรณีแปลก ๆ สำหรับ n ตัวอย่างเช่นการเหนี่ยวนำโดยใช้ความจริงที่ว่าแม้กองที่สร้างขึ้นในแบบนี้จะต้องมีโหนดภายในที่มีลูกหนึ่งคนสำหรับคู่ n …

1
พิสูจน์การปิดตัวภายใต้การกลับของภาษาที่ยอมรับโดย min-heap ออโตมาตา
นี่คือคำถามที่ติดตามคนนี้ ในคำถามก่อนหน้านี้เกี่ยวกับเครื่องจักรของรัฐที่แปลกใหม่ Alex ten Brink และ Raphael ได้กล่าวถึงความสามารถในการคำนวณของเครื่องสถานะแปลก ๆ : min-heap ออโตมาตา พวกเขาสามารถแสดงให้เห็นว่าชุดของภาษาที่ยอมรับโดยเครื่องดังกล่าว ( HALHALHAL ) ไม่ใช่เซตย่อยหรือเซ็ตของชุดของภาษาที่ไม่มีบริบท เมื่อพิจารณาถึงความสำเร็จและความสนใจที่ชัดเจนของคำถามนั้นฉันจะถามคำถามติดตามหลายครั้ง เป็นที่ทราบกันว่าภาษาปกติถูกปิดภายใต้การดำเนินงานที่หลากหลาย (เราอาจ จำกัด ตัวเองให้ดำเนินการขั้นพื้นฐานเช่นสหภาพการแยกการเติมเต็มความแตกต่างการต่อกันดาว Kleene และการกลับรายการ) ในขณะที่ภาษาปลอดบริบทมีการปิดที่แตกต่างกัน คุณสมบัติ (สิ่งเหล่านี้จะปิดภายใต้สหภาพการต่อกันดาว Kleene และการกลับรายการ) HAL ปิดตัวลงไหม

2
ภาษาที่ยอมรับโดยออโตมาต้ารุ่น จำกัด ที่ปรับเปลี่ยนแล้ว
ยานยนต์ จำกัด ที่กำหนดขึ้นอย่างแน่นอน (DFA) เป็นแบบจำลองเครื่องรัฐที่สามารถยอมรับภาษาทั้งหมดและเพียงภาษาเดียว สามารถกำหนด DFAs (และมักจะ) ในลักษณะที่แต่ละรัฐจะต้องให้การเปลี่ยนแปลงบางอย่างสำหรับองค์ประกอบทั้งหมดของตัวอักษรอินพุต; กล่าวอีกนัยหนึ่งฟังก์ชันการเปลี่ยนควรเป็นฟังก์ชัน (รวม)δ:Q×Σ→Qδ:Q×Σ→Q\delta : Q \times \Sigma \rightarrow Q ลองนึกภาพสิ่งที่เราจะเรียกว่าออโตเมติก จำกัด ที่กำหนดขึ้นสองเท่า (DDFA) มันถูกกำหนดในทำนองเดียวกันกับ DFA โดยมีข้อยกเว้นสองข้อ: อันดับแรกแทนที่จะเป็นช่วงการเปลี่ยนภาพจากสถานะหนึ่งไปอีกสถานะหนึ่งสำหรับสัญลักษณ์อินพุตที่เป็นไปได้ทุกอันมันต้องนำไปสู่สถานะที่แตกต่างกันสองสถานะ วินาทีเพื่อยอมรับสตริงเส้นทางที่เป็นไปได้ทั้งหมดต้องเป็นไปตามเงื่อนไขข้อใดข้อหนึ่งดังต่อไปนี้: เส้นทางที่เป็นไปได้ทั้งหมดผ่าน DDFA นำไปสู่สถานะการยอมรับ (เราจะเรียกสิ่งนี้ว่า DDFA ประเภท 1) เส้นทางที่เป็นไปได้ทั้งหมดผ่าน DDFA นำไปสู่สถานะการยอมรับเดียวกัน (เราจะเรียกสิ่งนี้ว่า DDFA ประเภท 2) ตอนนี้สำหรับคำถามของฉัน: DDFA แบบ type-1 และ type-2 ภาษาใดยอมรับ มันเป็นกรณีที่ , L …

1
การเข้ารหัสปริศนาซูโดกุที่มีประสิทธิภาพ
การระบุกริด 9x9 ใด ๆ จำเป็นต้องให้ตำแหน่งและค่าของแต่ละช่อง การเข้ารหัสnaïveสำหรับสิ่งนี้อาจให้ 81 (x, y, ค่า) triplets ต้องใช้ 4 บิตสำหรับแต่ละ x, y และค่า (1-9 = 9 ค่า = 4 บิต) รวมเป็น 81x4x3 = 972 บิต ด้วยการกำหนดหมายเลขแต่ละช่องสี่เหลี่ยมเราสามารถลดข้อมูลตำแหน่งเป็น 7 บิตปล่อยบิตสำหรับแต่ละตารางและรวม 891 บิต โดยการระบุคำสั่งที่กำหนดไว้ล่วงหน้าหนึ่งสามารถลดลงอย่างมากนี้เป็นเพียง 4 บิตสำหรับแต่ละค่ารวม 324 บิต อย่างไรก็ตามซูโดกุอาจมีตัวเลขที่ขาดหายไป นี่เป็นโอกาสที่จะลดจำนวนตัวเลขที่ต้องระบุ แต่อาจต้องใช้บิตเพิ่มเติมเพื่อระบุตำแหน่ง การใช้การเข้ารหัส 11 บิตของเรา (ตำแหน่งค่า) เราสามารถระบุตัวต่อด้วยเบาะแสกับ11nnn Nปริศนา)11n11n11nบิตเช่นตัวต่อน้อยที่สุด (17) ตัวต้องใช้ …

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

2
เหตุใดจึงมีการมอบหมายให้ใช้แบบคงที่เดียวมากกว่ารูปแบบการส่งผ่านต่อเนื่องในคอมไพเลอร์ที่ใช้ในอุตสาหกรรมจำนวนมาก?
ตามหน้า Wikipedia เกี่ยวกับการกำหนดค่าคงที่เดียว (SSA) , SSA ถูกใช้โดยโครงการขนาดใหญ่และเป็นที่รู้จักเช่น LLVM, GCC, MSVC, Mono, Dalvik, SpiderMonkey และ V8 ในขณะที่หน้าโครงการที่ใช้รูปแบบการส่งต่อ (CPS)ขาดการเปรียบเทียบเล็กน้อย ฉันมีความเห็นว่า CPS เป็นที่ต้องการโดยผู้รวบรวมและล่ามที่ใช้ภาษาที่ใช้งานได้เป็นหลักโดยเฉพาะ Haskell และ Scheme ดูเหมือนจะมีความโน้มเอียงอย่างมากต่อรูปแบบ CPS เนื่องจากข้อ จำกัด เรื่องการกลายพันธุ์หรือความต้องการการสนับสนุนต่อเนื่องชั้นหนึ่ง Smalltalk นั้นอาจจะต้องการสิ่งนี้เช่นกัน) วรรณกรรมสำคัญที่ฉันพบว่าใช้ CPS ดูเหมือนว่าจะเป็นงานที่เกี่ยวกับ Scheme หรือเกี่ยวข้องกับ Scheme ในบางประเด็น มีเหตุผลใดที่ทำให้ SSA ถูกนำไปใช้ในอุตสาหกรรมนอกเหนือจากแรงผลักดันในการยอมรับ? SSA และ CPS มีความสัมพันธ์ใกล้ชิด นั่นหมายความว่ามันจะง่ายต่อการระบุในแง่อื่น แต่บางทีการแสดงข้อมูลจะมีขนาดเล็กลงหรือมีประสิทธิภาพน้อยกว่าสำหรับ CPS

3
วิธีทำ homoiconic ภาษา
ตามบทความนี้บรรทัดของเสียงกระเพื่อมพิมพ์ "Hello world" ไปยังเอาต์พุตมาตรฐาน (format t "hello, world") เสียงกระเพื่อมซึ่งเป็นภาษา homoiconicสามารถรักษารหัสเป็นข้อมูลด้วยวิธีนี้: ตอนนี้จินตนาการว่าเราเขียนมาโครต่อไปนี้: (defmacro backwards (expr) (reverse expr)) ย้อนกลับเป็นชื่อของแมโครซึ่งใช้นิพจน์ (แสดงเป็นรายการ) และย้อนกลับ นี่คือ "สวัสดีโลก" อีกครั้งคราวนี้ใช้มาโคร: (backwards ("hello, world" t format)) เมื่อคอมไพเลอร์เสียงกระเพื่อมเห็นบรรทัดของรหัสนั้นมันจะดูที่อะตอมแรกในรายการ ( backwards) และสังเกตว่ามันตั้งชื่อแมโคร มันจะส่งรายการที่ไม่ได้ประเมินค่า("hello, world" t format)ไปยังแมโครซึ่งจัดเรียงรายการ(format t "hello, world")ใหม่เป็น รายการผลลัพธ์แทนที่นิพจน์แมโครและเป็นสิ่งที่จะถูกประเมินในเวลาทำงาน สภาพแวดล้อมเสียงกระเพื่อมจะเห็นว่าอะตอมแรก ( format) เป็นฟังก์ชั่นและประเมินมันส่งผ่านข้อโต้แย้งที่เหลือ ในเสียงกระเพื่อมบรรลุภารกิจนี้เป็นเรื่องง่าย (แก้ไขฉันถ้าฉันผิด) เพราะรหัสจะดำเนินการตามรายการ ( s- นิพจน์ ?) …

2
คำนวณ max-flow จาก min-cut
เรารู้ว่าการคำนวณการตอบสนองต่อการไหลสูงสุด การตัดเครือข่ายขั้นต่ำที่มีความสามารถเทียบเท่ากัน cf เลย สูงสุดไหลทฤษฎีบทนาทีตัด เรามีอัลกอริทึม (มีประสิทธิภาพมากกว่าหรือน้อยกว่า) สำหรับการคำนวณการไหลสูงสุดและการคำนวณการตัดต่ำสุดเนื่องจากการไหลสูงสุดนั้นไม่ยากหรือไม่แพงเลย แต่สิ่งที่ตรงกันข้าม เมื่อตัดน้อยที่สุดเราจะกำหนดกระแสสูงสุดได้อย่างไร โดยไม่ต้องแก้ไข Max-Flow ตั้งแต่เริ่มต้นแน่นอนและเร็วกว่านั้นเช่นกัน ความคิดบางอย่าง: จากการตัดขั้นต่ำเรารู้ค่าการไหลสูงสุด ฉันไม่เห็นว่าข้อมูลนี้ช่วยให้วิธีการมาตรฐานเพิ่มเส้นทางและ push-relabel ได้อย่างไรแม้ว่าการปรับตัวหลังดูเหมือนจะมีเหตุผลมากขึ้นเล็กน้อย เราไม่สามารถใช้การตัดต่ำสุดเพื่อแยกเครือข่ายออกเป็นสองส่วนและเรียกคืนเนื่องจากจะไม่ทำให้ปัญหาในกรณีเลวร้ายที่สุด (ถ้าพาร์ติชันหนึ่งเป็นแบบซิงเกิล) นอกจากนี้เราจะไม่ลดขั้นต่ำของอินสแตนซ์ขนาดเล็กลง การทราบคุณค่าของความเร็วการไหลสูงสุดที่แก้ไข Max-Flow LP อาจจะผ่านเงื่อนไขความหย่อนเสริมหรือไม่?

2
ผู้ประสานงาน Y ขัดแย้งกับจดหมายโต้ตอบ Curry-Howard หรือไม่?
อ Y Combinator มีชนิดโดย Curry-Howard Correspondence เพราะประเภทเป็นที่อยู่อาศัยมันจะต้องสอดคล้องกับทฤษฎีบทที่แท้จริง อย่างไรก็ตามเป็นจริงเสมอดังนั้นมันจึงดูเหมือนว่าชนิดของ combinator Y นั้นสอดคล้องกับทฤษฎีบทซึ่งไม่จริงเสมอไป สิ่งนี้จะเป็นอย่างไร( → ) → →( a → a ) → a(a→a)→a(a \rightarrow a) \rightarrow a( a → a ) → a(a→a)→a(a \rightarrow a) \rightarrow aa → aa→aa \rightarrow aaaa

1
Quantum Computing - ความสัมพันธ์ระหว่างโมเดล Hamiltonian และ Unitary
เมื่อพัฒนาอัลกอริทึมในการคำนวณควอนตัมฉันสังเกตว่ามีสองโมเดลหลักที่ใช้ บางขั้นตอนวิธีการ - เช่นปัญหาต้นไม้มิล NAND (ฟาร์ฮี, Goldstone, Guttman) - การทำงานโดยการออกแบบมิลและบางรัฐเริ่มต้นแล้วปล่อยให้วิวัฒนาการระบบตามสมSchrödingerบางครั้งก่อนที่จะดำเนินการวัดเสื้อเสื้อt อัลกอริธึมอื่น ๆ - เช่นอัลกอริธึมของ Shor สำหรับแฟ็กเตอริง - ทำงานโดยการออกแบบลำดับของการแปลงแบบ Unitary (คล้ายกับประตู) และการใช้การแปลงเหล่านี้ทีละครั้งกับสถานะเริ่มต้นก่อนทำการวัด คำถามของฉันคือในฐานะผู้เริ่มต้นในการคำนวณควอนตัมความสัมพันธ์ระหว่างโมเดลแฮมิลโตเนียนกับโมเดลการแปลงรวมเป็นอย่างไร อัลกอริทึมบางอย่างเช่นปัญหาต้นไม้ NAND ได้รับการปรับให้ทำงานกับลำดับการแปลงรวม (Childs, Cleve, Jordan, Yonge-Mallo) อัลกอริทึมทุกตัวในโมเดลหนึ่งสามารถเปลี่ยนเป็นอัลกอริทึมที่ตรงกันในอีกโมเดลได้หรือไม่? ตัวอย่างเช่นกำหนดลำดับของการแปลงแบบ Unitary เพื่อแก้ปัญหาเฉพาะสามารถออกแบบ Hamiltonian และแก้ปัญหาในแบบจำลองนั้นได้หรือไม่? แล้วทิศทางอื่นล่ะ? ถ้าเป็นเช่นนั้นอะไรคือความสัมพันธ์ระหว่างเวลาที่ระบบต้องพัฒนาและจำนวนการแปลงรวม (ประตู) ที่จำเป็นในการแก้ปัญหา? ฉันได้พบปัญหาอื่น ๆ อีกมากมายซึ่งดูเหมือนว่าจะเป็นกรณีนี้ แต่ไม่มีข้อโต้แย้งหรือหลักฐานที่ชัดเจนที่จะบ่งบอกว่าสิ่งนี้เป็นไปได้เสมอหรือเป็นจริง อาจเป็นเพราะฉันไม่รู้ว่าปัญหานี้เรียกว่าอะไรฉันจึงไม่แน่ใจว่าจะค้นหาอะไร

1
แยกบริบทด้วยภาษาปกติ
จุดตัดของบริบทภาษาอิสระ L กับภาษา M ทั่วไปกล่าวกันว่าเป็นบริบทฟรีเสมอ ฉันเข้าใจหลักฐานการก่อสร้างข้ามผลิตภัณฑ์ แต่ฉันก็ยังไม่เข้าใจว่าทำไมจึงไม่มีบริบท แต่ไม่ใช่ปกติ ภาษาที่สร้างขึ้นโดยทางแยกดังกล่าวมีสตริงที่ยอมรับได้ทั้งจาก PDA และ DFA เนื่องจาก DFA ได้รับการยอมรับจึงไม่ควรเป็นภาษาปกติ นอกจากนี้หากจุดตัดเป็นปกติก็ยังหมายถึงบริบทฟรีเนื่องจากภาษาปกติทั้งหมดยังไม่มีบริบท ใครสามารถอธิบายให้ฉันฟังได้ว่าทำไมภาษาที่ได้จากการแยกดังกล่าวไม่ปกติ

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