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

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

3
ทำไม Mersenne Twister ถึงถูกมองว่าดี?
Mersenne Twister ได้รับการยกย่องอย่างกว้างขวางว่าดี Heck แหล่ง CPythonบอกว่า "เป็นหนึ่งในเครื่องกำเนิดไฟฟ้าที่ได้รับการทดสอบอย่างกว้างขวางมากที่สุดที่มีอยู่" แต่สิ่งนี้หมายความว่าอย่างไร เมื่อถูกขอให้แสดงรายการคุณสมบัติของเครื่องกำเนิดนี้สิ่งที่ฉันสามารถเสนอได้ส่วนใหญ่จะไม่ดี: มันมีขนาดใหญ่และยืดหยุ่นไม่ได้ (เช่นไม่มีการค้นหาหรือสตรีมหลายรายการ) มันล้มเหลวในการทดสอบทางสถิติมาตรฐานแม้จะมีขนาดใหญ่ มันมีปัญหาร้ายแรงประมาณ 0 ซึ่งบอกว่ามันสุ่มตัวเองค่อนข้างแย่ มันเร็วมาก และอื่น ๆ เมื่อเทียบกับ RNG แบบง่าย ๆ เช่น XorShift * มันก็ซับซ้อนเช่นกัน ดังนั้นฉันจึงหาข้อมูลเกี่ยวกับสาเหตุที่สิ่งนี้คิดว่าดี กระดาษต้นฉบับให้ความเห็นจำนวนมากในช่วง "ซุปเปอร์ดาราศาสตร์" และการแบ่งตัว 623 มิติ ในหลายมาตรการที่รู้จักกันการทดสอบตามความสม่ำเสมอของมิติที่สูงขึ้นเช่นการทดสอบสเปกตรัม (cf, Knuth [1981]) และการทดสอบการกระจายตัว k ที่อธิบายไว้ด้านล่างนี้ถือว่ามีความแข็งแกร่งที่สุด แต่สำหรับคุณสมบัตินี้เครื่องกำเนิดไฟฟ้าจะถูกตีด้วยเคาน์เตอร์ที่มีความยาวเพียงพอ! สิ่งนี้ไม่มีความเห็นเกี่ยวกับการกระจายในท้องที่ซึ่งเป็นสิ่งที่คุณสนใจจริง ๆ ในเครื่องกำเนิดไฟฟ้า (แม้ว่า "ท้องถิ่น" อาจหมายถึงสิ่งต่าง ๆ ) และแม้แต่ CSPRNG …

3
อัลกอริธึมแบบแฟคทอเรียลมีประสิทธิภาพมากกว่าการคูณแบบไร้เดียงสา
ฉันรู้วิธีเขียนโค้ดสำหรับแฟคทอเรียลที่ใช้ทั้งแบบวนซ้ำและวนซ้ำ (เช่นn * factorial(n-1)สำหรับตัวอย่าง) ฉันอ่านในตำราเรียน (โดยไม่ได้รับคำอธิบายเพิ่มเติมใด ๆ ) ว่ามีวิธีที่มีประสิทธิภาพยิ่งขึ้นในการเขียนโปรแกรมสำหรับแฟคทอเรียลด้วยการแบ่งครึ่งแบบวนซ้ำ ฉันเข้าใจว่าทำไมถึงเป็นเช่นนั้น อย่างไรก็ตามฉันต้องการลองเขียนโค้ดด้วยตัวเองและฉันไม่คิดว่าจะเริ่มต้นอย่างไร เพื่อนแนะนำให้ฉันเขียนเคสพื้นฐานก่อน และฉันกำลังคิดที่จะใช้อาร์เรย์เพื่อให้ฉันสามารถติดตามตัวเลข ... แต่ฉันไม่เห็นวิธีการออกแบบรหัสดังกล่าว ฉันควรค้นคว้าเทคนิคแบบใด

6
คณิตศาสตร์ที่อยู่เบื้องหลังการแปลงจากฐานใด ๆ เป็นฐานใด ๆ โดยไม่ต้องผ่านฐาน 10?
ฉันได้ดูคณิตศาสตร์ที่อยู่เบื้องหลังการแปลงจากฐานใด ๆ เป็นฐานใด ๆ นี่คือเพิ่มเติมเกี่ยวกับการยืนยันผลลัพธ์ของฉันมากกว่าสิ่งใด ฉันพบสิ่งที่ดูเหมือนจะเป็นคำตอบของฉันใน mathforum.org แต่ฉันก็ยังไม่แน่ใจว่าฉันทำถูก ฉันมีการแปลงจากฐานขนาดใหญ่ไปเป็นฐานที่เล็กลงโอเคเพราะมันแค่ใช้ตัวเลขแรกคูณด้วยฐานที่คุณต้องการเพิ่มตัวเลขหลักถัดไป ปัญหาของฉันมาเมื่อแปลงจากฐานขนาดเล็กเป็นฐานขนาดใหญ่ เมื่อทำสิ่งนี้พวกเขาพูดถึงวิธีที่คุณต้องการแปลงฐานขนาดใหญ่ที่คุณต้องการเป็นฐานขนาดเล็ก ตัวอย่างจะไปจากฐาน 4 ถึงฐาน 6 คุณต้องแปลงหมายเลข 6 เป็นฐาน 4 รับ 12 จากนั้นคุณทำสิ่งเดียวกับที่คุณทำเมื่อคุณแปลงจากใหญ่ไปเล็ก ความยากลำบากที่ฉันมีกับมันดูเหมือนว่าคุณจำเป็นต้องรู้ว่าตัวเลขหนึ่งอยู่ในฐานอื่น ดังนั้นฉันจึงต้องการที่จะรู้ว่า 6 อยู่ในฐาน 4 นี้สร้างปัญหาใหญ่ในใจของฉันเพราะแล้วฉันจะต้องมีตาราง ไม่มีใครรู้วิธีการทำเช่นนี้ในแบบที่ดีขึ้น ฉันคิดว่าการแปลงพื้นฐานจะช่วยได้ แต่ฉันหางานนั้นไม่เจอ และจากเว็บไซต์ฉันพบว่ามันช่วยให้คุณสามารถแปลงจากฐานหนึ่งเป็นฐานโดยไม่ต้องผ่านฐาน 10 แต่ก่อนอื่นคุณต้องรู้วิธีแปลงหมายเลขแรกจากฐานหนึ่งไปเป็นฐาน นั่นทำให้มันไร้จุดหมาย ผู้แสดงความคิดเห็นพูดว่าฉันต้องสามารถแปลงตัวอักษรให้เป็นตัวเลขได้ ถ้าเป็นเช่นนั้นฉันรู้แล้วว่า นั่นไม่ใช่ปัญหาของฉัน ปัญหาของฉันคือการแปลงฐานขนาดใหญ่เป็นฐานขนาดเล็กฉันต้องแปลงหมายเลขฐานที่ฉันมีเป็นหมายเลขฐานที่ฉันต้องการก่อน ในการทำเช่นนี้ฉันจะเอาชนะวัตถุประสงค์เพราะถ้าฉันมีความสามารถในการแปลงฐานเหล่านี้ไปยังฐานอื่นฉันได้แก้ไขปัญหาของฉันแล้ว แก้ไข: ฉันหาวิธีแปลงจากฐานที่น้อยกว่าหรือเท่ากับ 10 เป็นฐานอื่น ๆ ที่น้อยกว่าหรือเท่ากับ 10 ฉันยังสามารถเปลี่ยนจากฐานที่มากกว่า 10 เป็นฐานใด …

2
เหตุใดบันทึกใน big-O ของการค้นหาแบบไบนารีจึงไม่ได้เป็นฐาน 2
ฉันยังใหม่กับการเข้าใจอัลกอริทึมวิทยาศาสตร์คอมพิวเตอร์ ฉันเข้าใจกระบวนการค้นหาแบบไบนารี แต่ฉันมีความเข้าใจผิดเล็กน้อยเกี่ยวกับประสิทธิภาพ ในขนาดขององค์ประกอบมันจะใช้เวลาโดยเฉลี่ยnขั้นตอนในการค้นหาองค์ประกอบเฉพาะ การฐาน 2 ลอการิทึมของอัตราผลตอบแทนที่ทั้งสองฝ่ายเข้าสู่ระบบ2 ( s ) = n ดังนั้นจะไม่ค่าเฉลี่ยของจำนวนขั้นตอนสำหรับการค้นหาแบบทวิภาคจะเข้าสู่ระบบ2 ( s ) ?s = 2ns=2ns = 2^nnnnเข้าสู่ระบบ2( s ) = nlog2⁡(s)=n\log_2(s) = nเข้าสู่ระบบ2( s )log2⁡(s)\log_2(s) บทความนี้วิกิพีเดียในการค้นหาแบบทวิภาคกล่าวว่าผลการดำเนินงานเฉลี่ย ) ทำไมเป็นเช่นนี้ ทำไมไม่ได้หมายเลขนี้เข้าสู่ระบบ2 ( n ) ?O ( บันทึกn )O(log⁡n)O(\log n)เข้าสู่ระบบ2( n )log2⁡(n)\log_2(n)

3
กรณีที่เลวร้ายที่สุดในการจัดเรียงที่มั่นคง?
ฉันมีปัญหาในการค้นหาแหล่งข้อมูลที่ดีซึ่งเป็นกรณีที่แย่ที่สุดในขั้นตอนวิธีการเรียงลำดับที่เสถียร ไม่มีใครรู้แหล่งข้อมูลที่ดีบ้างไหม?O(nlnn)O(nln⁡n)O(n \ln n) เพียงเตือนความจำในสถานที่หมายความว่ามันใช้อาร์เรย์ส่งผ่านและขั้นตอนวิธีการเรียงลำดับได้รับอนุญาตเท่านั้นที่จะใช้พื้นที่พิเศษคงที่ Stable หมายถึงองค์ประกอบที่มีคีย์เดียวกันปรากฏในลำดับเดียวกันในอาร์เรย์ที่เรียงลำดับเหมือนที่เคยเป็นในต้นฉบับ ตัวอย่างเช่นการเรียงลำดับที่ไร้เดียงสาเป็นกรณีที่เลวร้ายที่สุดและเสถียร แต่ใช้พื้นที่พิเศษquicksort มาตรฐานสามารถทำมั่นคงอยู่ในสถานที่ แต่ที่เลวร้ายที่สุดกรณี2) มี Heapsort อยู่กรณีที่เลวร้ายที่สุดแต่ไม่เสถียร Wikipediaมีแผนภูมิที่ดีซึ่งอัลกอริทึมการเรียงลำดับมีข้อบกพร่องใด โปรดสังเกตว่าไม่มีอัลกอริทึมการเรียงลำดับที่แสดงรายการที่มีเงื่อนไขความเสถียรทั้งสามกรณีที่เลวร้ายที่สุดและอยู่ในตำแหน่งO(nlnn)O(nln⁡n)O(n \ln n)O(n)O(n)O(n)O(n2)O(n2)O(n^2)O(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) ฉันได้พบเอกสารที่เรียกว่า"การผสานการใช้งานจริงในสถานที่"โดย Katajainen, Pasanen และ Teuhola ซึ่งอ้างว่ามีกรณีที่เลวร้ายที่สุดในรูปแบบการรวมตัวแปรที่เสถียร ถ้าฉันเข้าใจผลลัพธ์ของพวกเขาถูกต้องพวกมันจะใช้การรวม (bottom-up?) ซ้ำในของอาร์เรย์และหลังของแถวและใช้ตัวที่สองเป็นพื้นที่เริ่มต้นในการรวม ฉันยังคงอ่านผ่านทางนี้ดังนั้นข้อมูลเพิ่มเติมเกี่ยวกับว่าฉันตีความผลของพวกเขาอย่างถูกต้องชื่นชมO(nlnn)O(nln⁡n)O(n \ln n)1414\frac{1}{4}1212\frac{1}{2}1414\frac{1}{4} ฉันก็จะสนใจในกรณีที่เลวร้ายที่สุดในสถานที่ที่มั่นคงอย่างรวดเร็ว จากสิ่งที่ฉันเข้าใจการแก้ไข quicksort เป็นกรณีที่เลวร้ายที่สุดต้องเลือกเดือยที่เหมาะสมซึ่งจะทำลายเสถียรภาพที่ปกติแล้วมันจะสนุกO(nlnn)O(nln⁡n)O(n \ln n)O(nlnn)O(nln⁡n)O(n \ln n) นี่เป็นความสนใจทางทฤษฎีอย่างแท้จริงและฉันไม่มีการใช้งานจริง ฉันแค่อยากจะรู้ว่าอัลกอริทึมที่มีคุณสมบัติทั้งสามนี้

1
คุณได้รับ DFS หรือไม่หากคุณเปลี่ยนคิวเป็นสแต็กในการนำไปใช้งาน BFS
นี่คือรหัสเทียมมาตรฐานสำหรับการค้นหาแบบกว้างครั้งแรก: { seen(x) is false for all x at this point } push(q, x0) seen(x0) := true while (!empty(q)) x := pop(q) visit(x) for each y reachable from x by one edge if not seen(y) push(q, y) seen(y) := true ที่นี่pushและpopจะถือว่าเป็นการดำเนินการคิว แต่ถ้าพวกมันเป็นการทำงานแบบกองซ้อน? อัลกอริทึมที่ได้จะไปที่จุดยอดตามลำดับความลึกก่อนหรือไม่ หากคุณโหวตให้ความคิดเห็นว่า "นี่มันเล็กน้อย" ฉันขอให้คุณอธิบายว่าทำไมมันถึงสำคัญ ฉันพบปัญหาค่อนข้างยุ่งยาก

3
อัลกอริทึมที่ค้นหาจำนวนเส้นทางง่าย ๆ จาก
ทุกคนสามารถแนะนำผมอัลกอริทึมเส้นเวลาที่ใช้เวลาเป็น input กำกับวัฏจักรกราฟG=(V,E)G=(V,E)G=(V,E)และสองจุดsssและtttและผลตอบแทนจำนวนเส้นทางที่เรียบง่ายจากsssไปtttในG ฉันมีขั้นตอนวิธีการที่ฉันจะทำงาน DFS (ความลึกการค้นหาครั้งแรก) แต่ถ้า DFS พบทีแล้วมันจะไม่เปลี่ยนสี (จากสีขาวเป็นสีเทา) ใด ๆ ของโหนดที่มาในเส้นทางs \ rightsquigarrow เสื้อเพื่อให้ ถ้าเป็น subpath ของเส้นทางอื่น ๆ แล้วยัง DFS ผ่านไป subpath นี้ again.For ตัวอย่างพิจารณารายการถ้อยคำที่เราต้องค้นหาหมายเลขของเส้นทางจากหน้าไปวีGGGttts⇝ts⇝ts \rightsquigarrow tpppvvv posryvzworryvwzsszvposzorsvsrryyvvwzwz\begin{array}{|c|c c c|} \hline p &o &s &z \\ \hline o &r &s &v\\ \hline s &r \\ \hline r &y …

4
วิธีการวัด“ การเรียงลำดับ”
ฉันสงสัยว่ามีวิธีมาตรฐานในการวัด "sortness" ของอาร์เรย์หรือไม่? อาเรย์ที่มีจำนวนค่ามัธยฐานของค่าการรุกรานที่เป็นไปได้จะถือว่าไม่ได้เรียงลำดับสูงสุดหรือไม่ โดยที่ฉันหมายความว่ามันเป็นพื้นเท่าที่จะทำได้จากการเรียงลำดับหรือเรียงกลับกัน

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

2
asymptotically shuffling ไร้เดียงสาแค่ไหน?
เป็นที่ทราบกันดีว่าอัลกอริทึม 'ไร้เดียงสา' สำหรับการสับเปลี่ยนอาเรย์โดยการสลับแต่ละไอเท็มกับอีกอันที่สุ่มเลือกไม่ทำงานอย่างถูกต้อง: for (i=0..n-1) swap(A[i], A[random(n)]); โดยเฉพาะตั้งแต่ที่แต่ละnnnซ้ำหนึ่งของnnnเลือกที่จะทำ (กับความน่าจะเป็นชุด) มีn nnnn^nที่เป็นไปได้ 'เส้นทาง' ผ่านการคำนวณ; เพราะจำนวนการเรียงสับเปลี่ยนที่เป็นไปได้n ! n!n!ไม่แบ่งเท่า ๆ กันตามจำนวนของเส้นทางn nnnn^nมันเป็นไปไม่ได้ที่อัลกอริธึมนี้จะสร้างnแต่ละอัน! n!n!การเรียงสับเปลี่ยนที่มีความน่าจะเป็นเท่ากัน (แต่อย่างใดอย่างหนึ่งควรใช้การสลับแบบFischer-Yatesซึ่งจะเปลี่ยนการโทรเพื่อเลือกหมายเลขสุ่มจาก [0..n) ด้วยการโทรเพื่อเลือกหมายเลขแบบสุ่มจาก [i..n); เป็นสิ่งที่สงสัยกับคำถามของฉัน) สิ่งที่ฉันสงสัยคือการสับเปลี่ยนไร้เดียงสาจะเป็นไปได้อย่างไร โดยเฉพาะอย่างยิ่งการให้P ( n )P(n)P(n)เป็นชุดของพีชคณิตทั้งหมดและC ( ρ )C(ρ)C(\rho)เป็นจำนวนเส้นทางผ่านขั้นตอนวิธีการที่ไร้เดียงสาที่ผลิตที่เกิดการเปลี่ยนแปลงρ ∈ P ( n )ρ∈P(n)\rho\in P(n)สิ่งที่เป็นพฤติกรรมเชิงของการทำงาน M(n)=n!nnmaxρ∈P(n)C(ρ)M(n)=n!nnmaxρ∈P(n)C(ρ)\qquad \displaystyle M(n) = \frac{n!}{n^n}\max_{\rho\in P(n)} C(\rho) และ m(n)=n!nnminρ∈P(n)C(ρ)m(n)=n!nnminρ∈P(n)C(ρ)\qquad \displaystyle m(n) …

2
มีการปรับปรุงอัลกอริทึมของ Dana Angluin สำหรับการเรียนรู้ชุดปกติหรือไม่
ในปี 1987 กระดาษ Dana Angluin นำเสนออัลกอริธึมเวลาพหุนามสำหรับการเรียนรู้ DFA จากการค้นหาสมาชิกและการสอบถามทฤษฎี แสดงให้เห็นว่าเธอว่าถ้าคุณกำลังพยายามที่จะเรียนรู้น้อยที่สุด DFA กับรัฐและ countexample ใหญ่ที่สุดของคุณคือความยาวแล้วคุณต้องการที่จะทำให้สมาชิกแบบสอบถามและที่มากที่สุดทฤษฎีแบบสอบถามnnnmม.mO(mn2)O(ม.n2)O(mn^2)n−1n-1n - 1 มีการปรับปรุงจำนวนแบบสอบถามที่จำเป็นในการเรียนรู้ชุดปกติหรือไม่? การอ้างอิงและคำถามที่เกี่ยวข้อง Dana Angluin (1987) "การเรียนรู้ชุดปกติจากการค้นหาและการตอบโต้", Infortmation และการคำนวณ 75: 87-106 ขอบเขตที่ต่ำกว่าสำหรับการเรียนรู้ในคิวรีการเป็นสมาชิกและโมเดลตัวอย่าง

4
การเขียนโปรแกรมแบบไดนามิกเกี่ยวกับอะไร?
ขออภัยล่วงหน้าหากคำถามนี้ฟังดูเป็นใบ้ ... เท่าที่ฉันรู้การสร้างอัลกอริทึมโดยใช้การเขียนโปรแกรมแบบไดนามิกทำงานในลักษณะนี้: แสดงปัญหาว่าเป็นความสัมพันธ์ที่เกิดซ้ำ; ใช้ความสัมพันธ์ที่เกิดซ้ำทั้งผ่านการบันทึกและผ่านวิธีการจากล่างขึ้นบน เท่าที่ฉันรู้ฉันได้กล่าวทุกอย่างเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก ฉันหมายถึง: การเขียนโปรแกรมแบบไดนามิกไม่ได้ให้เครื่องมือ / กฎ / วิธีการ / ทฤษฎีบทสำหรับการแสดงความสัมพันธ์ที่เกิดขึ้นอีกหรือเปลี่ยนเป็นรหัส ดังนั้นมีอะไรพิเศษเกี่ยวกับการเขียนโปรแกรมแบบไดนามิก? มันให้อะไรคุณนอกจากวิธีคลุมเครือสำหรับการเข้าใกล้ปัญหาบางประเภท?

3
ฮาร์ดแวร์ / การนำไปใช้จะมีผลต่อความซับซ้อนของเวลา / พื้นที่ของอัลกอริทึมหรือไม่
ฉันไม่ใช่นักเรียน CS ดังนั้นนี่อาจเป็นคำถามที่โง่ แต่โปรดอดทนกับฉัน ... ในยุคก่อนคอมพิวเตอร์เราสามารถใช้โครงสร้างข้อมูลอาเรย์กับบางอย่างเช่นอาเรย์ของลิ้นชักเท่านั้น เนื่องจากต้องระบุตำแหน่งลิ้นชักด้วยดัชนีที่สอดคล้องกันก่อนที่จะแยกค่าออกมาความซับซ้อนของเวลาในการค้นหาอาร์เรย์คือโดยสมมติว่าเป็นการค้นหาแบบไบนารีO ( l o g( n ) )O(log(n))O(log(n)) อย่างไรก็ตามการประดิษฐ์คอมพิวเตอร์สร้างความแตกต่างใหญ่ คอมพิวเตอร์สมัยใหม่สามารถอ่านจาก RAM ได้อย่างรวดเร็วจนตอนนี้เราพิจารณาความซับซ้อนของเวลาในการค้นหาอาร์เรย์เป็น (แม้จะไม่ใช่ในทางเทคนิคเพราะมันใช้เวลามากขึ้นในการย้ายรีจิสเตอร์ในระยะไกล ฯลฯ )O ( 1 )O(1)O(1) อีกตัวอย่างหนึ่งคือพจนานุกรม Python ขณะที่หนึ่งอาจได้รับการเข้าถึงความซับซ้อนในพจนานุกรมของกับป่วยเป็นลายลักษณ์อักษรมากเกินไปวิธีมายากล (หรือขันโชคร้ายคือกุญแจมีจำนวนมากของการชนกัญชา) ก็มักจะสันนิษฐานว่าเป็นO ( 1 ) ในกรณีนี้ความซับซ้อนของเวลาขึ้นอยู่กับการใช้งานตารางแฮชของพจนานุกรม Python และการใช้ฟังก์ชั่นแฮชของคีย์O(n)O(n)O(n)__hash__O(1)O(1)O(1) สิ่งนี้หมายความว่าฮาร์ดแวร์ / การนำไปใช้นั้นมีผลต่อความซับซ้อนของเวลาของอัลกอริทึมหรือไม่? (ในขณะที่ทั้งสองตัวอย่างเป็นเรื่องเกี่ยวกับโครงสร้างข้อมูลแทนที่จะเป็นอัลกอริธึม แต่ตัวหลังถูกสร้างขึ้นในอดีตและฉันไม่เคยได้ยินเรื่องความซับซ้อนของเวลาในโครงสร้างข้อมูลดังนั้นฉันจึงใช้คำว่า "อัลกอริทึม" ที่นี่) สำหรับฉันแล้วอัลกอริธึมเป็นนามธรรมและแนวคิดซึ่งคุณสมบัติเช่นความซับซ้อนของเวลา / พื้นที่ไม่ควรได้รับผลกระทบจากการใช้งานในลักษณะที่เฉพาะเจาะจงหรือไม่

2
โปรแกรมสั้นมากที่ไม่ทราบสถานะหยุดพักคืออะไร
โปรแกรม 579 บิตในBinary แลมบ์ดาแคลคูลัสมีสถานะหยุดการทำงานที่ไม่รู้จัก: 01001001000100010001000101100111101111001110010101000001110011101000000111001110 10010000011100111010000001110011101000000111001110100000000111000011100111110100 00101011000000000010111011100101011111000000111001011111101101011010000000100000 10000001011100000000001110010101010101010111100000011100101010110000000001110000 00000111100000000011110000000001100001010101100000001110000000110000000100000001 00000000010010111110111100000010101111110000001100000011100111110000101101101110 00110000101100010111001011111011110000001110010111111000011110011110011110101000 0010110101000011010 กล่าวคือไม่ทราบว่าโปรแกรมนี้ยุติหรือไม่ ในการพิจารณาว่าคุณต้องแก้ไขการคาดคะเนของโคลลาตซ์ - หรืออย่างน้อยที่สุดสำหรับตัวเลขทั้งหมดไม่เกิน 2 ^ 256 ในพื้นที่เก็บข้อมูลนี้มีคำอธิบายที่สมบูรณ์เกี่ยวกับวิธีการรับโปรแกรมนี้ มีโปรแกรม BLC ที่สั้นกว่า (มาก) ที่ยังไม่ทราบสถานะหยุดพักหรือไม่?

3
อัลกอริธึมการตรวจจับรอบของฟลอยด์ การกำหนดจุดเริ่มต้นของวงจร
ฉันต้องการความช่วยเหลือในการทำความเข้าใจอัลกอริธึมการตรวจจับรอบของฟลอยด์ ฉันได้อธิบายเกี่ยวกับ wikipedia ( http://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare แล้ว ) ฉันสามารถดูว่าอัลกอริทึมตรวจจับรอบในเวลา O (n) อย่างไรก็ตามฉันไม่สามารถมองเห็นความจริงที่ว่าเมื่อเต่าและกระต่ายมาพบกันเป็นครั้งแรกการเริ่มต้นของวงจรสามารถถูกกำหนดได้โดยการเลื่อนตัวชี้ของเต่ากลับไปที่จุดเริ่มต้นแล้วขยับทั้งเต่าและกระต่ายทีละขั้น จุดที่พวกเขาพบกันครั้งแรกคือจุดเริ่มต้นของวงจร ใครช่วยได้โดยให้คำอธิบายหวังว่าจะแตกต่างจากวิกิพีเดียเพราะฉันไม่สามารถเข้าใจ / เห็นภาพได้

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