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

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

1
สนับสนุนโครงสร้างข้อมูลสำหรับการค้นหาในท้องถิ่นของ SAT
WalkSAT และ GSATเป็นอัลกอริทึมการค้นหาในท้องถิ่นที่รู้จักกันดีและเรียบง่ายสำหรับการแก้ปัญหาความพึงพอใจบูลีน pseudocode สำหรับอัลกอริทึม GSAT ถูกคัดลอกมาจากคำถามการใช้อัลกอริทึม GSAT - วิธีการเลือกตัวอักษรที่จะพลิก? และนำเสนอด้านล่าง procedure GSAT(A,Max_Tries,Max_Flips) A: is a CNF formula for i:=1 to Max_Tries do S <- instantiation of variables for j:=1 to Max_Iter do if A satisfiable by S then return S endif V <- the variable whose flip yield the …

3
วิธีที่มีประสิทธิภาพมากที่สุดในการคำนวณแฟคทอเรียลโมดูโลคืออะไร?
คุณรู้จักอัลกอริธึมที่คำนวณแฟคทอเรียลหลังจากโมดูลัสอย่างมีประสิทธิภาพหรือไม่? ตัวอย่างเช่นฉันต้องการโปรแกรม: for(i=0; i<5; i++) sum += factorial(p-i) % p; แต่pเป็นจำนวนมาก (นายก) สำหรับการใช้ปัจจัยโดยตรง8)(p≤108)(p≤108)(p \leq 10^ 8) ใน Python งานนี้ง่ายมาก แต่ฉันอยากรู้วิธีเพิ่มประสิทธิภาพ

1
อัลกอริทึมในการไล่ล่าเป้าหมายที่กำลังเคลื่อนที่
สมมติว่าเรามีกล่องดำfffซึ่งเราสามารถสอบถามและรีเซ็ต เมื่อเราตั้งค่าfffรัฐfSfSf_Sของfffถูกตั้งค่าเป็นองค์ประกอบได้รับการแต่งตั้งอย่างสม่ำเสมอโดยการสุ่มจากชุดที่{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}ที่nnnได้รับการแก้ไขและรู้จักการให้Ffffในแบบสอบถามfff , องค์ประกอบxxx (เดา) จาก{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}ให้บริการและความคุ้มค่าที่ส่งกลับเป็นn นอกจากนี้สถานะของถูกกำหนดเป็นค่าโดยที่ถูกเลือกแบบสุ่มโดยสุ่มจาก(fS−x)modn(fS−x)modn(f_S - x) \mod nfSfSf_Sffff′S=fS±kfS′=fS±kf_S' = f_S \pm kkkk{0,1,2,...,⌊n/2⌋−((fS−x)modn)}{0,1,2,...,⌊n/2⌋−((fS−x)modn)}\{0, 1, 2, ..., \lfloor n/2 \rfloor - ((f_S - x) \mod n)\} โดยการคาดเดาสุ่มเหมือนกันกับแต่ละแบบสอบถามคาดว่าจะต้องให้คาดเดาก่อนที่จะเดินทางกับความแปรปรวน (ตามที่ระบุไว้โดยไม่ต้องพิสูจน์)nnnfS=xfS=xf_S = xn2−nn2−nn^2 - n อัลกอริทึมสามารถออกแบบให้ดีขึ้นได้อย่างไร (เช่นทำการเดาน้อยลงอาจมีความแปรปรวนน้อยลงในจำนวนการเดา) จะดีกว่านี้ได้อีก (เช่นอัลกอริธึมที่เหมาะสมที่สุดและประสิทธิภาพของมันคืออะไร) การแก้ปัญหาที่มีประสิทธิภาพสำหรับปัญหานี้อาจมีผลกระทบต่อการประหยัดต้นทุนที่สำคัญสำหรับการถ่ายภาพที่กระต่าย

2
การสร้างแผนภูมิต้นไม้สั่งซื้อด้วยตนเอง
ฉันมีการมอบหมายที่ฉันต้องใช้ต้นไม้ค้นหาแบบทวิภาคและปรับเปลี่ยนเพื่อเรียงลำดับตัวเองเช่นรายการที่เข้าถึงได้มากที่สุด (มีลำดับความสำคัญสูงกว่า) อยู่ที่ด้านบนของต้นไม้รากเป็นโหนดที่เข้าถึงได้มากที่สุด . ศาสตราจารย์ให้ BST และโหนดโครงสร้างเพื่อทำงานร่วมกับฉัน แต่การพยายามเอาสมองของฉันไปรอบ ๆ อัลกอริทึมเพื่ออัปเดตต้นไม้เมื่อสิ่งต่าง ๆ แทรกอยู่ทำให้ฉันสับสน ฉันรู้ว่าเมื่อมีการแทรกเกิดขึ้นมันจะตรวจสอบว่าข้อมูลของโหนดปัจจุบันน้อยกว่าหรือมากกว่าโหนดปัจจุบันจากนั้นจะวนซ้ำในทิศทางที่ถูกต้องจนกว่าจะพบตัวชี้ null และแทรกตัวเองที่นั่น และหลังจากใส่แล้วจะเพิ่มระดับความสำคัญเป็น 1 template <class Type> void BinarySearchTree<Type> :: insert( const Type & x, BinaryNode<Type> * & t ) { if( t == NULL ) t = new BinaryNode<Type>( x, NULL, NULL ); else if( x …

1
การใช้อัลกอริทึม GSAT - วิธีการเลือกตัวอักษรที่จะพลิก?
GSAT อัลกอริทึมส่วนใหญ่ส่งตรง: คุณได้รับสูตรในรูปแบบปกติซึ่งเชื่อมต่อกันและพลิกตัวอักษรของอนุประโยคจนกว่าคุณจะพบวิธีแก้ปัญหาที่ตรงกับสูตรหรือถึงขีด จำกัด สูงสุดของ max_tries / max_flips และไม่พบวิธีแก้ปัญหา ฉันใช้อัลกอริทึมต่อไปนี้: procedure GSAT(A,Max_Tries,Max_Flips) A: is a CNF formula for i:=1 to Max_Tries do S <- instantiation of variables for j:=1 to Max_Iter do if A satisfiable by S then return S endif V <- the variable whose flip yield the most …

5
การบีบอัดที่มีประสิทธิภาพของต้นไม้ที่ไม่มีชื่อ
พิจารณาต้นไม้ไบนารีแบบไม่มีป้ายกำกับ เราสามารถบีบอัดต้นไม้ดังกล่าวเมื่อมีการชี้ไปยัง subtreesและกับ (การตีความความเท่าเทียมกันของโครงสร้าง) เราเก็บ (WLOG)และแทนที่คำแนะนำทุกคนที่จะกับตัวชี้ไปยังTดูคำตอบของ uliสำหรับตัวอย่างT ′ T = T ′ = T T ′ TTTTT'T′T'T= T'T=T′T = T'===TTTT'T′T'TTT ให้อัลกอริทึมที่ใช้ต้นไม้ในความหมายข้างต้นเป็นอินพุตและคำนวณจำนวนโหนดที่เหลือหลังจากการบีบอัด อัลกอริทึมควรใช้ในเวลาที่ (ในรูปแบบค่าใช้จ่ายในเครื่องแบบ) กับจำนวนโหนดในการป้อนข้อมูลnO (nบันทึกn )O(nlog⁡n)\cal{O}(n\log n)nnn นี่เป็นคำถามสอบและฉันไม่สามารถหาวิธีแก้ปัญหาที่ดีและฉันไม่ได้เห็น

1
อัลกอริธึมที่เหมาะสมที่สุดในการค้นหาเส้นรอบวงของกราฟกระจาย?
ฉันสงสัยว่าจะหาเส้นรอบวงของกราฟที่ไม่มีทิศทางโดยตรงได้อย่างไร ฉันหมายถึง ) ตามความเหมาะสมฉันหมายถึงความซับซ้อนของเวลาต่ำสุด| E| =O( | V| )|E|=O(|V|)|E|=O(|V|) ฉันคิดถึงการปรับเปลี่ยนบางอย่างในอัลกอริทึมของ Tarjanสำหรับกราฟที่ไม่ได้บอกทิศทาง แต่ฉันไม่พบผลลัพธ์ที่ดี ที่จริงฉันคิดว่าถ้าฉันสามารถหาส่วนประกอบที่เชื่อมต่อ 2 ในแล้วฉันจะพบเส้นรอบวงโดยอุปนัยบางอย่างที่สามารถทำได้จากส่วนแรก ฉันอาจผิดทาง อัลกอริทึมใด ๆ ที่ไม่มีสัญญาณดีกว่าΘ ( | V | 2 ) (เช่นo ( | V | 2 ) ) ยินดีต้อนรับO ( | V| )O(|V|)O(|V|)Θ ( | V|2)Θ(|V|2)\Theta(|V|^2)o ( | V|2)o(|V|2)o(|V|^2)

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 ครั้ง? โปรดทราบว่าเมทริกซ์มีจำนวนเต็มเกิน

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

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

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

3
มีคุกกี้จำนวนเท่าใดในกล่องคุกกี้ - ปูกระเบื้องดาว
กับเทศกาลวันหยุดที่กำลังจะมาฉันตัดสินใจที่จะทำให้บางดาวอบเชย นั่นเป็นเรื่องสนุก (และผลลัพธ์ที่ออกมาอร่อย) แต่ความเบื่อหน่ายภายในของฉันเมื่อฉันใส่ถาดดาวดวงแรกลงในกล่องและพวกมันจะไม่พอดีในชั้นเดียว: เกือบ! มีวิธีที่พวกเขาจะพอดีหรือไม่? เราจะปูกระเบื้องดาวได้ดีแค่ไหนกันล่ะ? ระบุว่านี่เป็นดาวหกแฉกปกติเราสามารถใช้การเอียงของรูปหกเหลี่ยมที่รู้จักกันดีในการประมาณเช่น: messed up หนึ่งไปที่มุมขวาบนขออภัย แต่นี่เป็นสิ่งที่ดีที่สุดเหรอ? มีที่ว่างมากมายระหว่างคำแนะนำ สำหรับการพิจารณานี้ให้เรา จำกัด ตัวเราไว้ที่กล่องสี่เหลี่ยมและดาวหกแฉกนั่นคือมีสามสิบองศา (หรือ ) ระหว่างคำแนะนำทุกอย่างและเพื่อนบ้านของมัน ดาวฤกษ์นั้นโดดเด่นด้วยรัศมีภายในและรัศมีรอบนอกr_o :π6π6\frac{\pi}{6}RผมRผมr_iRโอRโอr_o [ แหล่งที่มา ] โปรดทราบว่าเรามีรูปหกเหลี่ยมสำหรับและ hexagrams สำหรับr_o ฉันคิดว่ามันสมเหตุสมผลที่จะพิจารณาถึงความสุดยอดเหล่านี้ (สำหรับคุกกี้) และ จำกัด ตัวเราให้อยู่ในช่วงระหว่างนั่นคือBigr]Rผม= 3√2⋅ rโอRผม=32⋅Rโอr_i = \frac{\sqrt{3}}{2} \cdot r_oRผม= 13√⋅ rโอRผม=13⋅Rโอr_i = \frac{1}{\sqrt{3}} \cdot r_oRผมR0∈ [ 13√, 3√2]RผมR0∈[13,32]\frac{r_i}{r_0} \in \Bigl[\frac{1}{\sqrt{3}}, \frac{\sqrt{3}}{2}\Bigr] …

2
เรียงลำดับอาร์เรย์ของจำนวนเต็ม 5 จำนวนโดยเปรียบเทียบได้สูงสุด 7 รายการ
ฉันจะเรียงลำดับรายการจำนวนเต็ม 5 ตัวได้อย่างไรในกรณีที่แย่ที่สุดใช้เวลา 7 เปรียบเทียบ? ฉันไม่สนใจว่าจะมีการปฏิบัติการอื่นอีกกี่ครั้ง ฉันไม่รู้อะไรเป็นพิเศษเกี่ยวกับจำนวนเต็ม ฉันได้ลองวิธีการแบ่งและพิชิตที่แตกต่างกันสองสามข้อซึ่งทำให้ฉันเปรียบเทียบได้ 8 ข้อเช่นต่อไปนี้วิธีการผสานหรือผสานการผสานกับการใช้การค้นหาแบบไบนารีเพื่อค้นหาตำแหน่งการแทรก แต่ทุกครั้งที่ฉันจบด้วย 8 เปรียบเทียบกรณีที่เลวร้ายที่สุด . ตอนนี้ฉันแค่มองหาคำใบ้ไม่ใช่วิธีแก้ปัญหา

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