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

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

4
ความซับซ้อนของเวลาของอัลกอริทึม: มันเป็นสิ่งสำคัญที่จะระบุฐานของลอการิทึมหรือไม่?
เนื่องจากมีเพียงค่าคงที่ระหว่างฐานของลอการิทึมมันไม่ใช่แค่การเขียนเมื่อเทียบกับหรืออะไรก็ตาม ฐานอาจจะเป็นอย่างไรฉ( n ) = Ω ( บันทึกn )ฉ(n)=Ω(เข้าสู่ระบบ⁡n)f(n) = \Omega(\log{n})Ω ( บันทึก2n )Ω(เข้าสู่ระบบ2⁡n)\Omega(\log_2{n})

2
วิธีการพิสูจน์ว่าการคูณเมทริกซ์ของเมทริกซ์ 2x2 สองตัวไม่สามารถทำได้ในการคูณน้อยกว่า 7 ครั้ง
ในการคูณเมทริกซ์ของ Strassen เราบอกหนึ่งข้อเท็จจริงที่แปลก (อย่างน้อยสำหรับฉัน) ว่าการคูณเมทริกซ์ของสอง 2 x 2 นั้นใช้เวลา 7 การคูณ คำถาม:จะพิสูจน์ได้อย่างไรว่ามันเป็นไปไม่ได้ที่จะคูณเมทริกซ์ 2 x 2 สองตัวในการคูณ 6 ครั้ง? โปรดทราบว่าเมทริกซ์มีจำนวนเต็มเกิน

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

1
เหตุใดการเขียนโปรแกรมแบบไม่ทำงานจึงค้นคว้าต้นไม้แบบไดนามิก
ต้นไม้ไดนามิกมีบทบาทสำคัญในการแก้ปัญหาต่าง ๆ เช่นการไหลของเครือข่ายกราฟไดนามิกปัญหา combinatorial ("Dynamic Trees in Practice" โดย Tarjan และ Werneck) และเมื่อเร็ว ๆ นี้ได้รวมพจนานุกรม ("A Mergeable Dictionary" โดย Adam Karczmarz) โดยต้นไม้ไดนามิกฉันอ้างถึงคำจำกัดความที่ระบุไว้ในกระดาษของ Sleator & Tarjan "โครงสร้างข้อมูลสำหรับต้นไม้ไดนามิก" ในปี 1983 ความพยายามน้อยได้รับการเผยแพร่ภายในขอบเขตการวิจัยการเขียนโปรแกรมการทำงานตั้งแต่ เอ็ดเวิร์ด Kmett ดำเนินการรุ่นของต้นไม้ ST ส่วนใหญ่เป็นคำแปลของภาษา C ++ คู่ให้ดูต้นไม้ Link-ตัด Chris Okasaki เขียนการนำต้นไม้ Splay ไปใช้อย่าง จำกัด ในหนังสือที่โด่งดังของเขา Ralf Hinze และ Ross Paterson …

2
เกณฑ์พื้นฐานสำหรับแคลคูลัสของ combinator
เป็นที่ทราบกันดีว่า Combinators S และ K นั้นเป็นพื้นฐานสำหรับแคลคูลัสของ combinator ในแง่ที่ว่า combinators อื่น ๆ สามารถแสดงในรูปของมันได้ นอกจากนี้ยังมีพื้นฐานของ B, C, K, W ของ Curry ซึ่งมีคุณสมบัติเหมือนกัน ต้องมีจำนวนฐานดังกล่าวไม่ จำกัด แต่ฉันไม่รู้จักผู้อื่น ผมทราบว่ามีจำนวนของฐานเดียว Combinator เช่น Combinator เล็กน้อยและอื่น ๆ สร้าง / การตรวจสอบโดยฟอก อย่างไรก็ตามสิ่งเหล่านี้คือ "ผู้ประสาน" ที่ไม่เหมาะสมซึ่งหมายความว่าพวกเขาแสดงออกในแง่ของผู้รวมกลุ่มคนอื่น ๆ มากกว่าเป็นนามธรรมที่บริสุทธิ์ 1 เพื่อจุดประสงค์ของคำถามนี้ฉันสนใจเฉพาะชุดพื้นฐานที่ประกอบด้วยผู้ประกอบการที่เหมาะสม มีการศึกษาพื้นฐานที่เป็นไปได้อื่น ๆ อีกหรือไม่ อุดมคติจะเป็นบางสิ่งบางอย่างตามแนวการศึกษา Wolfram ของการคำนวณรูปแบบอื่น ๆ อีกมากมายซึ่งเป็นการผสมผสานระหว่างการศึกษาอย่างเป็นระบบ โดยเฉพาะอย่างยิ่งฉันสนใจว่าตัวอย่างง่ายๆของสิ่งต่อไปนี้เป็นที่รู้จักกัน: ชุดพื้นฐานที่น้อยที่สุดซึ่งรวมถึงตัวฉัน combinator …

1
ความเท่าเทียมกันทางภาษาสำหรับไวยากรณ์ที่ไม่มีบริบทเชิงเส้นเป็นสิ่งที่ตัดสินได้หรือไม่?
ลองพิจารณาสองไวยากรณ์ที่ปราศจากบริบทและG 2และถามคำถามต่อไปนี้: L ( G 1 ) = L ( G 2 )นั่นคือสองไวยากรณ์นั้นเทียบเท่ากันหรือไม่G1G1G_1G2G2G_2L ( G1) = L ( G2)L(G1)=L(G2)L(G_1) = L(G_2) โดยทั่วไปปัญหานี้จะไม่สามารถตัดสินใจได้ อย่างไรก็ตามหากทั้งและG 2เป็นไวยากรณ์ซ้าย - ขวา (หรือขวา - เชิงเส้น) แสดงว่าปัญหานั้นสามารถแก้ไขได้เนื่องจากไวยากรณ์ทั้งสองอธิบายถึงภาษาปกติG1G1G_1G2G2G_2 คำถามของฉันคือว่าปัญหาเดียวกันนั้นสามารถตัดสินใจได้หรือไม่เมื่อไวยากรณ์ทั้งสองเป็นเส้นตรง นอกจากนี้หากใครสามารถชี้วรรณกรรมที่เกี่ยวข้องนั่นจะได้รับการชื่นชมอย่างมาก!

4
สามารถพิสูจน์ได้โดยการทำงานที่ขัดแย้งโดยไม่มีกฎหมายว่าด้วยการยกเว้นตรงกลาง?
ฉันเพิ่งคิดเกี่ยวกับความถูกต้องของการพิสูจน์โดยความขัดแย้ง ฉันได้อ่านสองสามวันที่ผ่านมาเกี่ยวกับตรรกะเชิงปรีชาและทฤษฎีบทของ Godel เพื่อดูว่าพวกเขาจะให้คำตอบสำหรับคำถามของฉันหรือไม่ ตอนนี้ฉันยังคงมีคำถามที่คงค้างอยู่ (อาจเกี่ยวข้องกับเนื้อหาใหม่ที่ฉันอ่าน) และหวังว่าจะได้รับคำตอบ ( คำเตือน : คุณกำลังจะอ่านเนื้อหาที่มีรากฐานที่สับสนมากในเชิงตรรกะนำทุกอย่างด้วยเม็ดเกลือคาดว่าจะเป็นคำถามและไม่ใช่คำตอบมีความเข้าใจผิดอยู่มากมาย) ฉันคิดว่าคำถามหลักของฉันคือเมื่อเราแสดงให้เห็นว่าไม่ใช่ A นำไปสู่ความขัดแย้งบางอย่างดังนั้นไม่ใช่ A ต้องเป็นเท็จแล้วเราไปและสรุปว่า A ต้องเป็นจริง (โดยเฉพาะอย่างยิ่งถ้าฉันยอมรับกฎของการแยกคนตรงกลางเป็นสิ่งที่ทำให้รู้สึก) แต่สิ่งที่รบกวนจิตใจฉันก็คือการพิสูจน์ด้วยความขัดแย้งที่เกิดขึ้นจริง ก่อนอื่นเราเริ่มด้วยไม่ใช่ A จากนั้นเราก็ใช้หลักการและกฎของการอนุมาน (พูดโดยใช้กลไก) และดูว่ามันจะพาเราไปที่ไหน มันมักจะมาถึงความขัดแย้ง (บอกว่าเป็นความจริงหรือและเป็นจริง) เราสรุปได้ว่าไม่ใช่ A ต้องเป็นเท็จดังนั้น A จึงเป็นจริง ไม่เป็นไร. แต่คำถามของฉันคือระบบค้ำประกันแบบเป็นทางการมีอะไรบ้างไว¬ φ¬φ\neg \varphiφϕ\phiถ้าฉันใช้กระบวนการเดียวกัน แต่เริ่มต้นด้วย A ที่ฉันจะไม่ได้รับความขัดแย้งที่นั่น ? ฉันคิดว่ามีข้อสันนิษฐานบางอย่างซ่อนเร้นอยู่ในการพิสูจน์โดยความขัดแย้งว่าถ้ากระบวนการเดียวกันใน A เดียวกันก็ไม่ถึงข้อขัดแย้งเรารับประกันแบบไหนที่จะไม่เกิดขึ้น? มีหลักฐานที่เป็นไปไม่ได้หรือไม่? กล่าวอีกนัยหนึ่งถ้าฉันมี Turning Machine (TM) (หรือ super …

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

3
อัลกอริธึมการเรียงลำดับพื้นที่คงที่ที่มีประสิทธิภาพที่สุดคืออะไร?
ฉันกำลังมองหาอัลกอริธึมการเรียงลำดับสำหรับ int arrays ที่ไม่ได้จัดสรรไบต์ใด ๆ นอกจากขนาดของอาเรย์และ จำกัด เพียงสองคำสั่ง: SWAP: สลับดัชนีถัดไปกับดัชนีปัจจุบัน ย้าย: เลื่อนเคอร์เซอร์ไปที่ดัชนี +1 หรือ -1; นั่นคือคุณไม่สามารถสลับดัชนีเพื่อนบ้านไม่ใช่หรือสลับดัชนีหลังจากที่คุณเพียงแค่สลับดัชนี100 10อัลกอริธึมที่มีประสิทธิภาพมากที่สุดคืออะไรคือขั้นตอนที่ใช้การเคลื่อนไหวน้อยลง


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

5
การเรียกซ้ำ Collatz ทำงานนานเท่าใด
ฉันมีรหัส Python ดังต่อไปนี้ def collatz(n): if n <= 1: return True elif (n%2==0): return collatz(n/2) else: return collatz(3*n+1) เวลาทำงานของอัลกอริทึมนี้คืออะไร ลอง: ถ้าหมายถึงเวลาทำงานของฟังก์ชั่น จากนั้นฉันคิดว่าฉันมี T(n)T(n)T(n)collatz(n)⎧⎩⎨T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd{T(n)=1 for n≤1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd\begin{cases} T(n)=1 \text{ for } n\le 1\\ T(n)=T(n/2) \text{ for } n\text{ …

3
ทำไมคลาส NP-Complete จึงสำคัญเมื่อเทียบกับ NP-hard
ฉันกำลังศึกษาความซับซ้อนในการคำนวณและฉันก็สงสัยว่าทำไมปัญหา NP-Complete (NPC) จึงเป็นสิ่งสำคัญสำหรับทุกคน ฉันพบว่าชัดเจนว่าเหตุใดเราจึงสนใจแสดงปัญหา NP ที่ระบุคือ NP-hard ฉันยังเข้าใจความหมายของ NPC และการแสดงปัญหาการตัดสินใจที่กำหนดคือ NP-hard รู้ว่ามันอยู่ใน NP คือ NPC หมายถึงอย่างแน่นอน อย่างไรก็ตามสิ่งที่ฉันไม่เข้าใจคือ: ทำไมแนวคิดนี้จึงสำคัญ? แน่นอนถ้าเราพบใด ๆ อัลกอริทึม NP-ยากซึ่งจะทำงานในเวลาที่ P (หรือไม่ที่อยู่ใน NP) เราได้แสดงให้เห็นว่าPยังไม่มีข้อความP= Pยังไม่มีข้อความP=PNP = P เหตุใดแนวคิดนี้จึงสำคัญมาก

1
ความซับซ้อนของการหาค่าสัมประสิทธิ์ทวินามซึ่งเท่ากับจำนวน
สมมติว่าคุณได้รับตัวเลข (โดยใช้บิตในการเข้ารหัสไบนารี่)O ( บันทึกm )mmmO(logm)O(log⁡m)O(\log m) คุณจะค้นหาได้เร็วแค่ไหน (หรือหาว่าไม่มีอยู่จริง) n,k∈N,1&lt;k≤n2:(nk)=mn,k∈N,1&lt;k≤n2:(nk)=mn,k\in \mathbb N, 1<k\leq\frac{n}{2}:{n \choose k}=m ? ยกตัวอย่างเช่นการป้อนข้อมูลให้m=8436285m=8436285m=8436285หนึ่งการส่งออกเดือนพฤษภาคมn=27,k=10n=27,k=10n=27, k=10k อัลกอริทึมไร้เดียงสาสำหรับปัญหาจะข้ามค่าที่เป็นไปได้ทั้งหมดสำหรับnnnและค้นหาค่าkkkที่ตรงกับคุณสมบัติ สังเกตง่ายๆก็คือว่ามีไม่จำเป็นต้องตรวจสอบค่าของnnnมีขนาดเล็กกว่าlogmlog⁡m\log mหรือขนาดใหญ่กว่าO(m−−√)O(m)O(\sqrt m)เมตร) อย่างไรก็ตาม (แม้ว่าเราจะสามารถตรวจสอบเฉพาะค่าO (1) k ที่O(1)O(1)O(1)เป็นไปได้ต่อค่าn ) ซึ่งจะสิ้นสุดลงในอัลกอริทึมที่ไม่มีประสิทธิภาพซึ่งเป็นเลขชี้กำลังในขนาดอินพุตkkknnn อีกวิธีหนึ่งที่จะใช้ประเมินค่าk ที่เป็นไปได้kkk(เพียงพอที่จะตรวจสอบ{2,3,…,2logm}{2,3,…,2log⁡m}\{2,3,\ldots,2\log m\} ) และสำหรับการตรวจสอบค่าn ที่เป็นไปได้แต่ละnnnรายการ จากนั้นเราสามารถใช้: (nk)k&lt;(nk)&lt;nkk!(nk)k&lt;(nk)&lt;nkk!\left(\frac{n}{k}\right)^k<{n\choose k}< \frac{n^k}{k!} ดังนั้นสำหรับk ที่กำหนดkkkเราจะต้องตรวจสอบค่าnnnในช่วง[m⋅k!−−−−−√k,m−−√k⋅k][m⋅k!k,mk⋅k][\sqrt[\leftroot{-2}\uproot{2}k]{m\cdot k!},\sqrt[\leftroot{-2}\uproot{2}k]{m}\cdot{k}] , ทำเช่นนั้นโดยใช้การค้นหาแบบไบนารี่ (เมื่อkkkคงที่, (nk)(nk)n \choose kจะเพิ่มขึ้นแบบ monotonically ในnnn ), …

12
โครงสร้างข้อมูลหรืออัลกอริทึมสำหรับค้นหาความแตกต่างระหว่างสตริงได้อย่างรวดเร็ว
ฉันมีอาร์เรย์ของ 100,000 สตริงทั้งหมดของความยาวkkkkฉันต้องการเปรียบเทียบแต่ละสตริงกับสตริงอื่น ๆ เพื่อดูว่ามีสองสตริงที่แตกต่างกัน 1 อักขระหรือไม่ ตอนนี้ที่ผมเพิ่มแต่ละสายไปยังอาร์เรย์ที่ฉันตรวจสอบกับทุกสตริงแล้วในอาร์เรย์ซึ่งมีความซับซ้อนเวลาของการkn(n−1)2kn(n−1)2k\frac{n(n-1)}{2} k มีโครงสร้างข้อมูลหรืออัลกอริทึมที่สามารถเปรียบเทียบสตริงได้เร็วกว่าสิ่งที่ฉันกำลังทำอยู่หรือไม่? ข้อมูลเพิ่มเติมบางส่วน: หัวข้อการสั่งซื้อ: abcdeและxbcdeแตกต่างกัน 1 ตัวอักษรในขณะที่abcdeและedcbaแตกต่างกัน 4 ตัว สำหรับแต่ละคู่ของสตริงที่แตกต่างกันโดยตัวละครตัวหนึ่งฉันจะลบหนึ่งในสายเหล่านั้นออกจากอาร์เรย์ ตอนนี้ฉันกำลังมองหาสตริงที่แตกต่างกันเพียง 1 ตัวอักษร แต่มันจะดีถ้าความแตกต่างของตัวละคร 1 ตัวนั้นสามารถเพิ่มขึ้นได้เช่น 2, 3 หรือ 4 ตัวอักษร อย่างไรก็ตามในกรณีนี้ฉันคิดว่าประสิทธิภาพสำคัญกว่าความสามารถในการเพิ่มขีดจำกัดความแตกต่างของตัวละคร kkkมักจะอยู่ในช่วง 20-40

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