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

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

8
สัญชาตญาณของอัลกอริทึมสำหรับความซับซ้อนลอการิทึม
ฉันเชื่อว่าฉันมีความเข้าใจที่เหมาะสมของความซับซ้อนเช่น , Θ ( n )และΘ ( n 2 )O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) ในแง่ของรายการคือการค้นหาอย่างต่อเนื่องดังนั้นมันจึงเป็นแค่การนำส่วนหัวของรายการ Θ ( n )คือที่ที่ฉันจะเดินรายการทั้งหมดและΘ ( n 2 )กำลังเดินรายการหนึ่งครั้งสำหรับแต่ละองค์ประกอบในรายการO (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)Θ ( n2)Θ(n2)\Theta(n^2) มีวิธีที่เข้าใจง่ายคล้ายกันในการเข้าใจนอกเหนือจากการรู้ว่ามันอยู่ที่ไหนสักแห่งระหว่างO ( 1 )และΘ ( n )หรือไม่Θ ( บันทึกn )Θ(log⁡n)\Theta(\log n)O (1)O(1)\mathcal{O}(1)Θ ( n )Θ(n)\Theta(n)

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

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

4
การเรียกซ้ำแบบหางคืออะไร
ฉันรู้ว่าแนวคิดทั่วไปของการเรียกซ้ำ ฉันเจอแนวคิดเรื่องการเรียกซ้ำหางในขณะที่ศึกษาอัลกอริทึมแบบเร่งด่วน ในวิดีโอของอัลกอริทึมการเรียงลำดับด่วนจาก MITเวลา 18:30 วินาทีอาจารย์บอกว่านี่เป็นอัลกอริทึมแบบเรียกซ้ำ ไม่ชัดเจนสำหรับฉันว่าการเรียกซ้ำแบบหางหมายถึงอะไรจริงๆ บางคนสามารถอธิบายแนวคิดด้วยตัวอย่างที่เหมาะสมได้หรือไม่ คำตอบบางอย่างให้โดยชุมชนดังนั้นที่นี่

4
ทำไมเวลาพหุนามจึงเรียกว่า“ มีประสิทธิภาพ”?
ทำไมในวิทยาการคอมพิวเตอร์ความซับซ้อนใด ๆ ที่มากที่สุดในพหุนามถือว่ามีประสิทธิภาพ? สำหรับแอปพลิเคชันเชิงปฏิบัติใด ๆ(a)อัลกอริทึมที่มีความซับซ้อนนั้นเร็วกว่าอัลกอริธึมที่ใช้ในเวลาพูดแต่ตัวแรกถือว่าไม่มีประสิทธิภาพในขณะที่หลังมีประสิทธิภาพ ตรรกะอยู่ที่ไหน! n 80nlognnlog⁡nn^{\log n}n80n80n^{80} (ก) สมมติตัวอย่างเช่นจำนวนของอะตอมในจักรวาลจะอยู่ที่ประมาณ{80}1080108010^{80}

3
ทำไมการค้นหาแบบไบนารี่จึงเร็วกว่าการค้นหาแบบไตรภาค
การค้นหาอาเรย์ขององค์ประกอบโดยใช้การค้นหาแบบไบนารี่จะใช้เวลาในกรณีที่ซ้ำที่สุดการทำซ้ำเพราะในแต่ละขั้นตอนเราตัดแบ่งครึ่งของพื้นที่การค้นหาของเรา หากเราใช้ 'การค้นหาแบบไตรภาค' แทนเราจะตัดพื้นที่การค้นหาของเราสองในสามในแต่ละการวนซ้ำดังนั้นกรณีที่แย่ที่สุดควรใช้การซ้ำ ...log 2 N log 3 N &lt; log 2 NNNNlog2Nlog2⁡N\log_2 Nlog3N&lt;log2Nlog3⁡N&lt;log2⁡N\log_3 N < \log_2 N ดูเหมือนว่าการค้นหาแบบไตรภาคเร็วกว่าแล้วทำไมเราถึงใช้การค้นหาแบบไบนารี่?

12
วิธีตรวจสอบหมายเลขกับ Bob โดยไม่ต้องรู้ว่าอีฟ
คุณต้องตรวจสอบว่าบ๊อบเพื่อนของคุณมีหมายเลขโทรศัพท์ที่ถูกต้อง แต่คุณไม่สามารถถามเขาได้โดยตรง คุณต้องเขียนคำถามลงบนบัตรที่มอบให้อีฟซึ่งจะนำบัตรไปให้บ๊อบและส่งคำตอบกลับมาให้คุณ คุณต้องเขียนอะไรลงบนการ์ดนอกเหนือจากคำถามเพื่อให้แน่ใจว่าบ๊อบสามารถเข้ารหัสข้อความเพื่อให้อีฟไม่สามารถอ่านหมายเลขโทรศัพท์ของคุณได้? หมายเหตุ:คำถามนี้อยู่ในรายการของ "คำถามสัมภาษณ์ Google" ด้วยเหตุนี้จึงมีคำถามมากมายหลายคำถามในเว็บและหลายคำถามยังไม่มีคำตอบที่ชัดเจนหรือแม้แต่คำตอบที่ถูกต้อง หมายเหตุ 2:คำตอบที่น่ารำคาญสำหรับคำถามนี้คือบ๊อบควรเขียน "โทรหาฉัน" ใช่มันฉลาดมาก 'นอกกรอบ' และทุกอย่าง แต่ไม่ได้ใช้เทคนิคใด ๆ ของ CS ที่เราเรียกฮีโร่ของเราว่า "บ๊อบ" และศัตรูที่แอบดักฟัง "อีฟ" ของเขา อัปเดต: คะแนนโบนัสสำหรับอัลกอริทึมที่คุณและบ๊อบทำได้ด้วยมืออย่างสมเหตุสมผล อัปเดต 2: โปรดทราบว่าบ๊อบไม่จำเป็นต้องส่งข้อความใด ๆ ถึงคุณ แต่ยืนยันว่าเขามีหมายเลขโทรศัพท์ที่ถูกต้องของคุณโดยไม่ต้องส่งให้อีฟสามารถถอดรหัสได้ซึ่งอาจนำไปสู่การแก้ปัญหาที่ง่ายกว่า

2
คำสั่งของคำจำกัดความการเติบโตจาก Reynolds & Tymann
ฉันกำลังอ่านหนังสือที่ชื่อว่าPrinciples of Computer Science (2008) โดย Carl Reynolds และ Paul Tymann (จัดพิมพ์โดย Schaum's Outlines) บทที่สองแนะนำอัลกอริทึมพร้อมตัวอย่างของการค้นหาตามลำดับซึ่งจะวนซ้ำตามรายการชื่อและส่งกลับ TRUE หากพบชื่อที่กำหนดในรายการ ผู้เขียนพูดต่อไป (หน้า 17): เราบอกว่า "ลำดับการเติบโต" ของอัลกอริธึมการค้นหาตามลำดับคือ n สัญกรณ์สำหรับสิ่งนี้คือ T (n) นอกจากนี้เรายังบอกว่าอัลกอริทึมที่มีลำดับการเจริญเติบโตอยู่ภายในปัจจัยคงที่ของ T (n) มีค่า theta ของ NL พูด "การค้นหาตามลำดับมีทีต้าของ n" ขนาดของปัญหาคือ n ความยาวของรายการที่ค้นหา ฉันพบว่ามันยากที่จะติดตาม หนังสือเล่มนี้เต็มไปด้วยข้อผิดพลาดดังนั้นฉันไม่แน่ใจว่าฉันทำอะไรหายไปหรือมีการพิมพ์ผิดในย่อหน้าด้านบน โดยทั่วไปภาษาอังกฤษฉันไม่ค่อยเห็นประโยคจบด้วย "... พูด" ฉันสับสนมาก T หมายถึงอะไร หนังสือเล่มนี้ไม่ได้อธิบาย มันเป็นเวลาหรือสำหรับที? …

2
หาค่ามัธยฐานของอาเรย์ไม่ได้เรียงลำดับใน
เพื่อหาค่ามัธยฐานของอาร์เรย์ที่ไม่ได้เรียงลำดับที่เราสามารถทำให้นาทีกองในเวลาสำหรับnองค์ประกอบและจากนั้นเราสามารถแยกหนึ่งโดยหนึ่งn / 2องค์ประกอบที่จะได้รับค่ามัธยฐาน แต่วิธีการนี้จะใช้เวลาO ( n log n )เวลาO ( n บันทึกn )O(nlog⁡n)O(n\log n)nnnn / 2n/2n/2O ( n บันทึกn )O(nlog⁡n)O(n \log n) เราสามารถทำเช่นเดียวกันโดยวิธีการบางอย่างในเวลา ? ถ้าเราทำได้แล้วได้อย่างไรO(n)O(n)O(n)

7
ต้นไม้ทอดต่ำสุดเทียบกับเส้นทางที่สั้นที่สุด
ความแตกต่างระหว่างอัลกอริทึม Spanning Tree ขั้นต่ำและอัลกอริธึมพา ธ ที่สั้นที่สุดคืออะไร ในคลาสโครงสร้างข้อมูลของฉันเราครอบคลุมอัลกอริธึมแผนผังต้นไม้ขั้นต่ำสองอัน (Prim's และ Kruskal's) และอัลกอริธึมพา ธ สั้นที่สุด (Dijkstra's) Spanning Tree ขั้นต่ำเป็นแผนผังในกราฟที่ครอบคลุมทุกจุดยอดและน้ำหนักรวมของต้นไม้น้อยที่สุด เส้นทางที่สั้นที่สุดนั้นค่อนข้างชัดเจนมันเป็นเส้นทางที่สั้นที่สุดจากจุดสุดยอดหนึ่งไปอีกจุดหนึ่ง สิ่งที่ฉันไม่เข้าใจคือเนื่องจากต้นไม้ที่สแปนนิ่งขั้นต่ำมีน้ำหนักรวมเพียงเล็กน้อยเส้นทางในต้นไม้จะเป็นเส้นทางที่สั้นที่สุดหรือไม่ ใครช่วยอธิบายสิ่งที่ฉันหายไปได้บ้าง ความช่วยเหลือใด ๆ ที่ชื่นชม

3
เส้นทางที่ยาวที่สุดในต้นไม้ที่ไม่ได้ถูกส่งทิศทางด้วยการสำรวจเส้นทางเดียว
มีอัลกอริธึมมาตรฐานนี้สำหรับการค้นหาเส้นทางที่ยาวที่สุดในต้นไม้ที่ไม่ได้ใช้เส้นทางโดยใช้การค้นหาสองครั้งแรก: เริ่ม DFS จากจุดสุดยอดแบบสุ่มและหาจุดสุดยอดที่ไกลที่สุดจากมัน บอกว่ามันเป็นวี 'vvvv′v′v' ตอนนี้เริ่ม DFS จากเพื่อค้นหาจุดสุดยอดจากนั้น เส้นทางนี้เป็นเส้นทางที่ยาวที่สุดในกราฟv′v′v' คำถามคือสิ่งนี้สามารถทำได้อย่างมีประสิทธิภาพมากขึ้น? เราสามารถทำได้ด้วย DFS หรือ BFS เดียวได้หรือไม่? (สิ่งนี้สามารถอธิบายได้อย่างเท่าเทียมกันว่าเป็นปัญหาของการคำนวณเส้นผ่านศูนย์กลางของต้นไม้ที่ไม่ได้บอกทิศทาง)

6
การจัดการกับการล่วงล้ำ: ปัญหา NP-complete
สมมติว่าฉันเป็นโปรแกรมเมอร์และฉันมีปัญหาที่สมบูรณ์แบบที่ฉันต้องแก้ปัญหา มีวิธีการใดบ้างที่สามารถจัดการกับปัญหา NPC มีแบบสำรวจหรืออะไรที่คล้ายกันในหัวข้อนี้?

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

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

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

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