อัลกอริธึมที่รวดเร็วอย่างรวดเร็ว


18

ผมอยากจะคำนวณtreewidthของกราฟ มีฮิวริสติกที่ดีมากสำหรับปัญหากราฟ NP-hard อื่น ๆ เช่นVF2สำหรับมอร์ฟอร์มอร์ฟิซึ่มย่อยกราฟที่มีโค้ดที่มีอยู่ในigraphเช่น ฉันลองพวกเขาในกราฟของฉันและพบว่ามันทำงานได้อย่างรวดเร็วสำหรับข้อมูลของฉัน

มีอัลกอริธึมที่รวดเร็วสำหรับการคำนวณความน่าเชื่อถือในหลอดเลือดดำที่คล้ายกันหรือไม่?


1
fyi treewidth เมื่อไม่นานมานี้ได้รับการเชื่อมต่อกับความแข็ง SATโดย Gaspers / Szeider ใน FOCS หวังว่าจะได้ยินจากคนอื่น ๆ ในการแชท / การสนทนา
vzn

คำตอบ:


19

เท่าที่ฉันรู้สถานะของศิลปะเป็นสิ่งที่รายงานมา

Hans L. Bodlaender, Fedor V. Fomin, Arie MCA Koster, Dieter Kratsch และ Dimitrios M. Thilikos (2012), "ในอัลกอริธึมที่แน่นอนสำหรับการเดินป่า", ธุรกรรม ACM เกี่ยวกับอัลกอริทึม 9 (1): A12, doi: 10.1145 / 2390176.2390188 .

วิธีการที่อธิบายมีการรวมอัลกอริทึมกับการเพิ่มประสิทธิภาพการแก้ปัญหาบางอย่างเพื่อให้เร็วขึ้นในทางปฏิบัติO* * * *(2n)


2
ขอขอบคุณ. เอกสารอ้างอิง 2, 8 และ 15 ที่ให้ฮิวริสติกแบบ จำกัด ขอบเขตบนและล่างในทางปฏิบัติอาจมีประโยชน์มากที่สุดจากบทความนั้น
เฟลิกซ์

10

ฉันเขียนบทความที่ชื่อว่า A Fast Parallel Branch และ Bound Algorithm สำหรับ Treewidth ใน ICTAI 2011 มันสามารถคำนวณ treewidth ในแบบมัลติคอร์ได้ ฉันใช้ฮิวริสติกจำนวนมากและใช้เวลาปรับแต่งโปรแกรมมาก

ฉันเป็นนักศึกษาระดับปริญญาตรีสุ่มในประเทศจีนและไม่ได้ทำให้การประชุมที่ดี แต่จากผลการทดสอบของฉันฉันคิดว่าโปรแกรมของฉันเร็วมาก ฉันแก้ไขเกณฑ์ชี้วัดที่ไม่ได้แก้ไขจำนวนมากใน Treewidth lib และโปรแกรมของฉันเร็วกว่าอัลกอริธึมที่โจวและแฮนเซนเสนอถึง 40 เท่าใน IJCAI 09 ..

ฉันไม่ได้ทำงานในหัวข้อนี้อีกต่อไป แต่ถ้างานก่อนหน้าของฉันมีประโยชน์คุณสามารถดาวน์โหลดโปรแกรม (src และ exe) ได้จากhttp://www.callowbird.com/undergraduate-stuff.htmlและลองดู (ยังคงช้ามากในกรณีที่มีขนาดใหญ่กว่าเล็กน้อย)



5

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

มีอัลกอริธึมมากมายที่จะคำนวณส่วนบน, ส่วนล่าง, หรือส่วนที่เหลือที่แน่นอนของกราฟ เราได้ใช้ฮิวริสติกส่วนบนและล่างจำนวนมากและอัลกอริธึมที่แน่นอนสองแบบ (การเขียนโปรแกรมแบบไดนามิกและอัลกอริทึมสาขาและขอบเขต) รายงานนี้เปรียบเทียบอัลกอริธึมชนิดต่าง ๆ และแสดงว่าต้องการอัลกอริทึมบางตัว

Treewidth เป็นพารามิเตอร์กราฟที่มีการใช้งานเชิงทฤษฎีและปฏิบัติที่น่าสนใจมากมาย แบบสำรวจนี้ทบทวนผลลัพธ์อัลกอริทึมในการพิจารณาความน่าจะเป็นของกราฟที่กำหนดและค้นหาการสลายตัวของต้นไม้ที่มีความกว้างขนาดเล็ก ทั้งผลลัพธ์ทางทฤษฎี, การสร้างความซับซ้อนของการคำนวณเชิงซีมของปัญหา, เป็นงานทดลองเกี่ยวกับการวิเคราะห์พฤติกรรม (ทั้งสำหรับขอบเขตบนสำหรับขอบเขตล่าง), การประมวลผลล่วงหน้า, อัลกอริทึมที่แน่นอน


3

ปราชญ์ไม่รู้วิธีคำนวณความว่องไวอย่างแม่นยำ แต่มันสามารถบอกถึงความกว้างของกราฟขนาดเล็กได้

http://www.sagemath.org/doc/reference/graphs/sage/graphs/graph_decompositions/vertex_separation.html

ฉันจะ verrryyyyyyyy ดีใจที่ได้เรียนรู้ว่ามีสิ่งใดดำเนินการและสาธารณะเพื่อคำนวณการย่อยสลายต้นไม้แม้ว่า :-)

Nathann


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