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

คำถามเกี่ยวกับคำแนะนำที่กำหนดไว้อย่างดีสำหรับการทำงานให้สำเร็จและการวิเคราะห์ที่เกี่ยวข้องในแง่ของเวลา / หน่วยความจำ / ฯลฯ

4
ความหมายของเลขชี้กำลังการคูณเมทริกซ์
เรียกขานนิยามของเมทริกซ์การคูณเลขยกกำลังωω\omegaเป็นค่าที่น้อยที่สุดที่มีเป็นที่รู้จักกันnωnωn^{\omega}ขั้นตอนวิธีการคูณเมทริกซ์ นี้ไม่ได้เป็นที่ยอมรับว่าเป็นความหมายทางคณิตศาสตร์อย่างเป็นทางการดังนั้นฉันเดาความหมายทางเทคนิคเป็นสิ่งที่ต้องการ infimum มากกว่าทุกtttดังกล่าวว่ามีขั้นตอนวิธีการคูณเมทริกซ์ในntntn^t T ในกรณีนี้เราไม่สามารถพูดมีขั้นตอนวิธีสำหรับเมทริกซ์ในการคูณnωnωn^{\omega}หรือแม้กระทั่งnω+o(1)nω+o(1)n^{\omega + o(1)}เพียงว่าทุกϵ>0ϵ>0\epsilon > 0มีอยู่ขั้นตอนวิธีการในnω+ϵnω+ϵn^{\omega + \epsilon} ε อย่างไรก็ตามบ่อยครั้งที่เอกสารและผลซึ่งใช้เมทริกซ์คูณจะรายงานค่าใช้จ่ายของพวกเขาเป็นเพียงแค่O(nω)O(nω)O(n^{\omega}) ) มีคำจำกัดความอื่นของที่อนุญาตให้ใช้นี้หรือไม่? มีผลลัพธ์ใด ๆ ที่รับประกันได้หรือไม่ว่าจะต้องมีอัลกอริทึมของเวลาn ωหรือn ω + o ( 1 ) ? หรือการใช้O ( n ω ) เป็นเพียงเลอะเทอะ?ωω\omeganωnωn^{\omega}nω+o(1)nω+o(1)n^{\omega + o(1)}O(nω)O(nω)O(n^{\omega})

10
มีปัญหาอะไรบ้างที่เรารู้ว่าเรามีอัลกอริธึมที่เหมาะสมที่สุด?
อะไรคือปัญหาที่ไม่สำคัญที่เรารู้ว่าอัลกอริธึมปัจจุบันที่เรามีคือปัญหาที่เหมาะสมที่สุด (สำหรับเครื่องทัวริง) และนี่พิสูจน์ได้อย่างไร

1
รักษาความสงบเรียบร้อยในรายการในในเวลา
ปัญหาการบำรุงรักษาคำสั่งซื้อ (หรือ "การรักษาคำสั่งซื้อในรายการ") คือการสนับสนุนการดำเนินงาน: singleton: สร้างรายการที่มีหนึ่งรายการส่งคืนตัวชี้ไปยังรายการนั้น insertAfter: กำหนดตัวชี้ไปยังรายการแทรกรายการใหม่หลังจากส่งคืนตัวชี้ไปยังรายการใหม่ delete: กำหนดตัวชี้ไปยังรายการเอาออกจากรายการ minPointer: กำหนดสองพอยน์เตอร์ให้กับรายการในรายการเดียวกันส่งคืนค่าที่ใกล้กับด้านหน้าของรายการมากขึ้น ฉันทราบวิธีแก้ไขปัญหาสามข้อที่ดำเนินการทั้งหมดในเวลาตัดจำหน่าย พวกเขาทั้งหมดใช้การคูณO ( 1 )O(1)O(1) Athanasios K. Tsakalidis: การรักษาลำดับในรายการที่เชื่อมโยงทั่วไป Dietz, P. , D. Sleator, สองอัลกอริทึมสำหรับการรักษาความสงบเรียบร้อยในรายการ Michael A. Bender, Richard Cole, Erik D. Demaine, Martin Farach-Colton และ Jack Zito“ สองอัลกอริทึมแบบง่ายสำหรับการคงคำสั่งในรายการ” สามารถเก็บรักษาลำดับในรายการในเวลาตัดจำหน่ายโดยไม่ใช้การดำเนินการทางคณิตศาสตร์ใด ๆ ที่ไม่ได้อยู่ในหรือไม่?O ( 1 )O(1)O(1)C0Aค0AC^0

5
การอ้างอิงสำหรับการแยกส่วนประกอบแบบแยกส่วน
กระดาษ / หนังสืออะไรที่ดีที่จะเข้าใจพลังของการสลายตัวแบบแยกส่วนและคุณสมบัติของมัน? ฉันสนใจเป็นพิเศษในด้านอัลกอริทึมของการแยกส่วนประกอบแบบแยกส่วน ฉันได้ยินมาว่ามีความเป็นไปได้ที่จะพบการแยกส่วนประกอบแบบแยกส่วนของกราฟในเวลาเชิงเส้น มีอัลกอริธึมที่ค่อนข้างง่ายสำหรับเรื่องนี้หรือไม่? อัลกอริธึมที่ไม่ค่อยมีประสิทธิภาพ แต่ง่ายกว่านี้อย่างไร

3
การขายของ Bob (การเรียงลำดับคู่ที่มีข้อ จำกัด เพื่อลดผลรวมของผลิตภัณฑ์)
ผมเคยถามคำถามนี้ในกองมากเกินขณะที่ผ่านมา: ขายของบ๊อบ: ปัญหา มีคนแนะนำการโพสต์คำถามที่นี่เช่นกัน มีคนถามคำถามเกี่ยวกับปัญหานี้แล้ว - น้ำหนักต่ำสุดย่อยของ cardinality ที่กำหนด - แต่เท่าที่ฉันเข้าใจมันไม่ได้ช่วยฉันด้วยปัญหาของฉัน คำตอบที่ได้รับคะแนนสูงสุดใน StackOverflow ก็ควรพิจารณาเช่นกัน ต่อไปนี้เป็นคำต่อคำของคำถาม StackOverflow ของฉัน อาจเป็นสูตรที่ไม่เหมาะสมสำหรับไซต์นี้ (เฮ้ฉันรู้สึกว่าไม่ได้รับการศึกษาเพียงแค่ขอจากที่นี่) ดังนั้นอย่าลังเลที่จะแก้ไข: หมายเหตุ: นี่เป็นคำพูดที่เป็นนามธรรมของปัญหาชีวิตจริงเกี่ยวกับการสั่งซื้อบันทึกในไฟล์ SWF โซลูชันจะช่วยฉันปรับปรุงแอปพลิเคชันโอเพนซอร์ซ Bob มีร้านค้าและต้องการขายสินค้า ร้านค้าของเขามีสินค้าจำนวนหนึ่งและเขามีหน่วยเป็นจำนวนเต็มจำนวนหนึ่งของแต่ละผลิตภัณฑ์ในสต็อก นอกจากนี้เขายังมีป้ายราคาติดตั้งบนชั้นวางจำนวนมาก (มากที่สุดเท่าที่จำนวนผลิตภัณฑ์) โดยมีการพิมพ์ราคาลงบนพวกเขา เขาสามารถวางป้ายราคาใด ๆ ในผลิตภัณฑ์ใด ๆ (ราคารวมสำหรับหนึ่งรายการสำหรับสินค้าทั้งหมดของเขาของผลิตภัณฑ์นั้น) แต่สินค้าบางอย่างมีข้อ จำกัด เพิ่มเติม - ผลิตภัณฑ์ดังกล่าวอาจไม่ถูกกว่าผลิตภัณฑ์อื่นบางอย่าง คุณต้องหาวิธีจัดเรียงป้ายราคาเช่นว่าค่าใช้จ่ายโดยรวมของสินค้าทั้งหมดของบ๊อบต่ำที่สุดเท่าที่จะเป็นไปได้ ต้นทุนรวมคือผลรวมของป้ายราคาที่กำหนดของแต่ละผลิตภัณฑ์คูณด้วยปริมาณของผลิตภัณฑ์นั้นในสต็อก ได้รับ: N - จำนวนของผลิตภัณฑ์และป้ายราคา S i , 0≤ …

1
การออกแบบอัลกอริทึมและความซับซ้อน - วิธีคิดในแบบนั้น
คำถามของฉันเป็นคำถามทั่วไป: ฉันจะเริ่มคิดในแง่ของการออกแบบอัลกอริทึมและความซับซ้อนได้อย่างไร ฉันจะเข้าเรียนหลักสูตรบัณฑิตศึกษาในการออกแบบอัลกอริทึม ฉันลงทะเบียนก่อนหน้านี้แล้ว แต่ทิ้งไว้ในภายหลังเพราะฉันทำไม่ทัน ฉันต้องเรียนหลักสูตรนี้ตามความต้องการ มีวิธีการคิดแบบนี้หรือไม่? ฉันรู้ว่าสิ่งนี้ทำให้มันค่อนข้างหยาบ แต่บางครั้งมุมมองที่สดใหม่ช่วยให้คิดถึงเรื่องที่แตกต่าง ปัญหาหลักที่ฉันมีกับหลักสูตรนี้ (และหลักสูตรเชิงทฤษฎีที่คล้ายกัน) คือ: ฉันจะรู้ได้อย่างไรว่าวิธีแก้ไขปัญหาที่ฉันคิดถูกต้อง ฉันพบว่าส่วนใดส่วนหนึ่งในเชิงทฤษฎีเป็นสิ่งที่ไม่มีกฎเกณฑ์โดยเฉพาะอย่างยิ่งเมื่อ 'พิสูจน์' อัลกอริทึมที่แน่นอนทำหน้าที่หรือพฤติกรรมในทางใดทางหนึ่ง? หลักสูตรของเราจะใช้ข้อความมาตรฐาน: บทนำสู่อัลกอริทึมโดย CLRS มีตำรา / ไซต์ / หนังสือ / อื่น ๆ หรือไม่ ที่อาจเสนอวิธีในการสร้างความมั่นใจในสาขานี้ ขอบคุณทุกคน, Jason Dane

2
จำนวนขั้นต่ำของการโอนย้ายเพื่อเรียงลำดับรายการ
ในการพยายามคิดอัลกอริทึมการเรียงลำดับของตัวเองฉันกำลังมองหาเกณฑ์มาตรฐานที่ดีที่สุดที่ฉันสามารถเปรียบเทียบได้ สำหรับการเรียงลำดับองค์ประกอบAและเรียงลำดับB ที่เรียงลำดับไม่ได้วิธีที่มีประสิทธิภาพในการคำนวณจำนวนที่เหมาะสมของการถ่ายโอนจากAถึงBคืออะไร การขนย้ายถูกกำหนดให้เป็นการสลับตำแหน่งของ 2 องค์ประกอบในรายการดังนั้นเช่น 1 2 4 3 มีการขนย้ายหนึ่งครั้ง (การขนย้าย 4 และ 3) เพื่อสร้าง 1 2 3 4 สิ่งที่ต้องการ 1 7 2 5 9 6 ต้องการการแปลง 4 ครั้ง (7, 2), (7, 6), (6,5), (9, 7) อัปเดต (9/7/11): คำถามเปลี่ยนเป็น "transposition" แทนที่จะเป็น "swaps" เพื่ออ้างถึงการแลกเปลี่ยนที่ไม่ติดกัน

3
Super Mario Flows ใน NP?
หนึ่งส่วนขยายแบบคลาสสิกของปัญหา max-flow คือปัญหา "max-flow ตลอดเวลา": คุณจะได้รับ digraph สองโหนดที่มีความแตกต่างเป็นแหล่งที่มาและ sink ซึ่งแต่ละส่วนโค้งมีสองพารามิเตอร์ความจุต่อ หน่วยเวลาและความล่าช้า คุณยังจะได้รับเป็นเวลาขอบฟ้าTเป้าหมายคือการคำนวณการไหลในช่วงเวลาที่ได้รับจำนวนเงินสูงสุดของวัสดุจากแหล่งที่อ่างล้างจานโดยเวลาT การไหลของมูลค่าสูงสุดสามารถคำนวณได้ในเวลาพหุนามโดยการลดค่าแบบดั้งเดิมที่ชาญฉลาดไปสู่การไหลสูงสุดในราคาต่ำสุดTTTTTT ฉันสนใจในส่วนขยายของรุ่นนี้ที่ขอบมีพารามิเตอร์ "ช่วงชีวิต" ตัวที่สาม ถ้าโค้งมีช่วงชีวิตและเสื้อเป็นเวลาที่เร็วที่สุดที่ไหลในเชิงบวกจะถูกส่งผ่านโค้งแล้วเราทำลายโค้งในเวลาT + ℓ คุณอาจคิดว่านี่เป็นเหมือนแพลตฟอร์มใน Super Mario Brothers ที่พังทลาย / ถูกทำลายไม่นานหลังจากที่คุณเหยียบพวกเขาหรือคุณอาจคิดว่ามันเป็นแบตเตอรี่ที่จำเป็นสำหรับการขับเคลื่อนขอบซึ่งไม่สามารถปิดได้หลังจากเปิดใช้งาน . ( แก้ไข :) ปัญหาการตัดสินใจคือเมื่อกำหนดค่าการไหลของขอบเขตล่างBให้ว่าจะสามารถกำหนดตารางการประชุมได้หรือไม่ทั้งขอบเขตบนขอบฟ้าเวลาและค่าขอบเขตการไหลต่ำกว่าℓℓ\elltttt+ℓt+ℓt+\ellBBB จนถึงตอนนี้ฉันจะเห็นว่าปัญหานี้เป็นปัญหาที่รุนแรงมาก (ผ่าน 3 พาร์ติชัน) แต่ฉันไม่รู้จริง ๆ ว่าอยู่ใน NP: มีการรับประกันวิธีแสดงวิธีแก้ปัญหาดาน ๆ หรือไม่? ในรุ่นคลาสสิกการไหลที่ดีที่สุดแบบพิเศษบางอย่างถูกใช้เพื่อหลีกเลี่ยงปัญหานี้ หมายเหตุ: โมเดลด้านบนนั้นมีการขีดเส้นใต้เล็กน้อยเนื่องจากคุณอาจอนุญาตหรือไม่อนุญาตการสะสมของโฟลว์ที่โหนดและคุณอาจมีโมเดลแบบแยกเวลาหรือแบบต่อเนื่อง การแก้ไขคำถามสำหรับโมเดลเหล่านี้จะดีมาก

1
การสลายตัวของกราฟสำหรับการรวมฟังก์ชั่น "ท้องถิ่น" ของการติดฉลากจุดสุดยอด
∑x∏ij∈Ef(xi,xj)∑x∏ij∈Ef(xi,xj)\sum_x \prod_{ij \in E} f(x_i,x_j)maxx∏ij∈Ef(xi,xj)maxx∏ij∈Ef(xi,xj)\max_x \prod_{ij \in E} f(x_i,x_j) เมื่อมีการใช้ค่าสูงสุดหรือผลรวมเหนือการติดฉลากทั้งหมดของผลิตภัณฑ์จะถูกยึดเหนือขอบทั้งหมดสำหรับกราฟและเป็นฟังก์ชันโดยพลการ ปริมาณนี้หาได้ง่ายสำหรับกราฟความกว้างของต้นไม้ที่ถูกล้อมรอบและโดยทั่วไป NP-hard สำหรับกราฟระนาบ จำนวนสีที่เหมาะสมชุดอิสระสูงสุดและจำนวนกราฟย่อย Eulerian เป็นกรณีพิเศษของปัญหาข้างต้น ฉันสนใจแผนการประมาณเวลาพหุนามสำหรับปัญหาประเภทนี้โดยเฉพาะอย่างยิ่งสำหรับกราฟระนาบ กราฟย่อยสลายแบบใดที่มีประโยชน์VVVEEEG={V,E}G={V,E}G=\{V,E\}fff แก้ไข 11/1 : เป็นตัวอย่างฉันสงสัยเกี่ยวกับการย่อยสลายที่อาจคล้ายกับการขยายกลุ่มของฟิสิกส์เชิงสถิติ (เช่นการขยายเมเยอร์) เมื่อfffแสดงถึงการตอบโต้ที่อ่อนแอการขยายการบรรจบกันซึ่งหมายความว่าคุณสามารถบรรลุความแม่นยำที่กำหนดด้วยเงื่อนไขการขยายตัวkkkโดยไม่คำนึงถึงขนาดของกราฟ สิ่งนี้จะไม่แสดงถึงการมีอยู่ของ PTAS สำหรับปริมาณหรือไม่? อัปเดต 02/11/2011 การขยายตัวที่อุณหภูมิสูงเขียนฟังก์ชันพาร์ติชันZZZเป็นผลรวมของคำที่เงื่อนไขการสั่งซื้อที่สูงขึ้นนั้นขึ้นอยู่กับการโต้ตอบคำสั่งที่สูงขึ้น เมื่อ "correlations ผุ" คำสั่งซื้อที่สูงจะสลายตัวเร็วพอที่มวลของZเกือบทั้งหมดZZZจะถูกบรรจุในจำนวน จำกัด ของคำที่มีลำดับต่ำ สำหรับอินสแตนซ์สำหรับ Ising model ให้พิจารณานิพจน์ต่อไปนี้ของฟังก์ชันพาร์ติชัน Z=∑x∈XexpJ∑ij∈Exixj=c∑A∈C(tanhJ)|A|Z=∑x∈Xexp⁡J∑ij∈Exixj=c∑A∈C(tanh⁡J)|A|Z=\sum_\mathbf{x\in \mathcal{X}} \exp J \sum_{ij \in E} x_i x_j = …

1
Sparse Walsh-Hadamard Transform
วอลช์-Hadamard แปลง (WHT)เป็นลักษณะทั่วไปของฟูเรียร์และเป็นมุมฉากเปลี่ยนแปลงในเวกเตอร์ของตัวเลขจริงหรือซับซ้อนของมิติเมตร การแปลงรูปได้รับความนิยมในการคำนวณควอนตัม แต่ได้มีการศึกษาเมื่อไม่นานมานี้ว่าเป็นสิ่งที่จำเป็นสำหรับการคาดคะเนของเวกเตอร์มิติสูงเพื่อใช้ในการพิสูจน์ Johnson-Lindenstrauss Lemma คุณสมบัติหลักของมันคือแม้ว่ามันจะเป็นเมทริกซ์สี่เหลี่ยมจัตุรัสd × dแต่มันสามารถนำไปใช้กับเวกเตอร์ในเวลาO ( d log d ) (แทนที่จะเป็นd=2md=2md = 2^md×dd×dd\times dO(dlogd)O(dlog⁡d)O(d \log d) ) โดยวิธีการแบบ FFTd2d2d^2 สมมติว่าเวกเตอร์ใส่เป็นป่าโปร่ง : มันมีเพียงไม่กี่รายการภัณฑ์ (พูด ) มีวิธีใดที่จะคำนวณ WHT ในเวลาf ( r , d )เช่นนั้นf ( d , d ) = O ( d log d )และ f …

1
การปิดสกรรมกริยาออนไลน์ดีกว่า O (N ^ 2) ต่อการเพิ่มขอบ
ฉันกำลังมองหาอัลกอริทึมออนไลน์เพื่อรักษาการปิด transitive ของกราฟ acyclic กำกับด้วยความซับซ้อนเวลาน้อยกว่า O (N ^ 2) ต่อการเพิ่มขอบ อัลกอริทึมปัจจุบันของฉันเป็นเช่นนี้: For every new edge u->v connect all nodes in Pred(u) \cup { u } with all nodes in Succ(v) \ \cup { v }. สำหรับ O (n ^ 2) ขอบแปลนี้ในเวลาซับซ้อนรวมของ O (n ^ 4) ซึ่งมากยิ่งกว่าตัวอย่างเช่นฟลอยด์-Warshall

6
ความซับซ้อนของอัลกอริทึมแบบสุ่มสลับ Fisher-Yates
คำถามนี้เกี่ยวข้องกับอัลกอริทึม Fisher-Yates สำหรับส่งกลับการสุ่มแบบสุ่มของอาร์เรย์ที่กำหนด หน้าวิกิพีเดียบอกว่าความซับซ้อนของมันคือ O (n) แต่ผมคิดว่ามันเป็น O (n log n) ในการวนซ้ำแต่ละครั้งฉันเลือกจำนวนเต็มแบบสุ่มระหว่าง 1 ถึง i เพียงแค่เขียนจำนวนเต็มในหน่วยความจำคือ O (log i) และเนื่องจากมีการวนซ้ำแล้วจึงรวมเป็น O (บันทึก 1) + O (บันทึก 2) + ... + O (บันทึก n) = O (n บันทึก n) ซึ่งไม่ดีกว่าอัลกอริทึมไร้เดียงสา ฉันทำอะไรบางอย่างหายไปหรือเปล่า หมายเหตุ: อัลกอริธึมไร้เดียงสาคือการกำหนดหมายเลขสุ่มในแต่ละองค์ประกอบในช่วงเวลา (0,1) จากนั้นเรียงลำดับอาร์เรย์โดยคำนึงถึงตัวเลขที่กำหนด

3
Subgraph isomorphism กับต้นไม้
หากเรามีกราฟขนาดใหญ่ (กำกับ) และต้นไม้ที่ถูกรูทเล็ก ๆHความซับซ้อนที่รู้จักกันดีที่สุดสำหรับการค้นหากราฟย่อยของG isomorphic ถึงHคืออะไร? ฉันรับรู้ถึงผลลัพธ์ของมอร์ฟิซึ่มส์ทรีที่ทั้งGและHเป็นต้นไม้และที่Gคือภาพถ่ายหรือมีขอบเขต treewidth (และอื่น ๆ ) แต่ไม่ใช่สำหรับกราฟและต้นไม้นี้ GGGHHHGGGHHHGGGHHHGGG

2
อัลกอริธึมที่เร็วที่สุดในการคำนวณอันดับของเมทริกซ์สี่เหลี่ยมคืออะไร
ให้ matrix (สมมติว่า ) อัลกอริธึมที่เร็วที่สุดในการคำนวณอันดับและพื้นฐานของคอลัมน์คืออะไร?m×nm×nm \times nm≥nm≥nm \ge n ฉันรู้ว่ามันสามารถแก้ไขได้ผ่านการตัดกันเชิงเส้น matroid ซึ่งหมายถึงอัลกอริทึมกำหนดเวลาและอัลกอริธึมแบบสุ่ม มีอัลกอริธึมกำหนดเวลาที่ลดปัญหาโดยตรง (หรือการกำจัดแบบเกาส์เซียน) เพื่อการคูณเมทริกซ์หรือไม่O(mn1.62)O(mn1.62)O(mn^{1.62})O(mnω−1)O(mnω−1)O(mn^{\omega-1})O(mnω−1)O(mnω−1)O(mn^{\omega-1})

3
ตรวจสอบสูตรที่มีสองปริมาณ (
นักแก้ปัญหา SAT ให้วิธีที่มีประสิทธิภาพในการตรวจสอบความถูกต้องของสูตรบูลีนด้วยหนึ่งตัวระบุ ยกตัวอย่างเช่นในการตรวจสอบความถูกต้องของเราสามารถใช้ตัวแก้ SAT เพื่อพิจารณาว่าφ ( x )น่าพอใจหรือไม่ ในการตรวจสอบความถูกต้องของ∀ x φ ( x )เราสามารถใช้แก้ SAT เพื่อตรวจสอบว่า¬ φ ( x )คือพอใจ (นี่คือx = ( x 1 , … , x n )คือn -vector ของตัวแปรบูลีนและφ∃x.φ(x)∃x.φ(x)\exists x . \varphi(x)φ(x)φ(x)\varphi(x)∀x.φ(x)∀x.φ(x)\forall x . \varphi(x)¬φ(x)¬φ(x)\neg \varphi(x)x=(x1,…,xn)x=(x1,…,xn)x=(x_1,\dots,x_n)nnnφφ\varphi เป็นสูตรบูลีน) ตัวแก้ปัญหา QBF ได้รับการออกแบบมาเพื่อตรวจสอบความถูกต้องของสูตรบูลีนที่มีจำนวนโดยพลการ ถ้าเรามีสูตรที่มีสองตัวนับ พวกเขามีอัลกอริทึมที่มีประสิทธิภาพสำหรับการตรวจสอบความถูกต้องหรือไม่: เป็นสิ่งที่ดีกว่าการใช้อัลกอริทึมทั่วไปสำหรับ QBF หรือไม่? …

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