การหาการขนานที่เหมาะสมที่สุดจากกราฟที่ไม่ระบุทิศทางแบบถ่วงน้ำหนักทั่วไป


9

ฉันกำลังแก้ไขปัญหาของชุดภาพซ้อนกัน ชุดเหล่านี้สามารถแสดงโดยกราฟถ่วงน้ำหนักแบบไม่ระบุทิศทางเช่นชุดนี้:

กราฟ 7 โหนด

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

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

ส่วนประกอบที่ไม่ทับซ้อนกันเช่น DB และ FEG เราสามารถเรียกใช้อัลกอริทึมการผสมบนส่วนประกอบเหล่านี้อย่างปลอดภัยในแบบขนาน ผลลัพธ์คือกราฟต่อไปนี้ (โหนดที่ผสานจะแสดงเป็นสีเขียว):

กราฟ 4 โหนด

ขณะนี้ไม่สามารถทำการขนานได้อีกต่อไปเนื่องจากส่วนประกอบที่เชื่อมต่อสองส่วนซ้อนกัน

อัลกอริทึมรุ่นขนานจะมีลักษณะดังนี้:

1. Find connected components (no two are connected directly) and create task for each.
2. Run the tasks in parallel.
3. Update graph.
4. Until single node remains, continue with 1.

ส่วนที่ยุ่งยากนั้นเป็นขั้นตอนแรก: วิธีการค้นหาส่วนประกอบที่เชื่อมต่อที่ดีที่สุดได้อย่างไร?

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

ทางออกที่ดีที่สุดอาจนำส่วนประกอบที่เชื่อมต่อมาจำนวนมากในแต่ละการวนซ้ำเพื่อเพิ่มการขนานและลดจำนวนการวนซ้ำในเวลาเดียวกัน (ดังนั้นจึงมีตัวแปรสองตัวในการปรับให้เหมาะสม)

ฉันไม่สามารถนึกถึงอัลกอริธึมการเพิ่มประสิทธิภาพอื่น ๆ ที่นอกเหนือจากการย้อนรอยนั่นคือพื้นที่การค้นหาของวิวัฒนาการที่เป็นไปได้ทั้งหมดและเลือกอันที่มีความขนานสูงสุด

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

คุณมีเบาะแสใด ๆ สำหรับอัลกอริธึมการเพิ่มประสิทธิภาพดังกล่าวซึ่งค้นหากลยุทธ์ที่ดีที่สุดในการเลือกส่วนของกราฟเพื่อให้มีการขนานสูงสุดและจำนวนการทำซ้ำขั้นต่ำที่สุด


องค์ประกอบที่เชื่อมต่อไม่ใช่คำที่ถูกต้องที่นี่ เชื่อมต่อกราฟดั้งเดิมแล้ว คุณหมายถึงการแบ่งจุดยอดออกเป็นT,S1,...,Skเช่นระยะห่างระหว่าง Sผม และ SJอย่างน้อย 2 ไม่มีข้อ จำกัด เกี่ยวกับวิธีการSผมควรมีลักษณะอย่างไร (ตัวอย่างเช่นฉันไม่เห็นว่าคุณ "ผสมผสาน" กราฟย่อยใด ๆ ) มันยังไม่ชัดเจนว่าคุณหมายถึงอะไรโดยการวนซ้ำ
Chao Xu

คำตอบ:


1

ซึ่งคล้ายกับลำดับยีนที่ทับซ้อนกันในการประกอบจีโนม บทที่ 4 ของวิทยานิพนธ์ Ananth ของ

ในแบบคู่ขนานคุณค้นหาคู่ที่มีแนวโน้มและรักษาโครงสร้างการค้นหาสหภาพแบบกระจาย ดูTarjan และ Vishkinเกี่ยวกับอัลกอริทึมของ hook และทางลัดเพื่อยุบส่วนประกอบที่เชื่อมต่อ

นอกจากนี้คุณสามารถลองใช้วิธี DeBrujin กราฟล่าสุดในพิกเซลแถว 64 บิต ฉันคิดว่านี่จะให้ผลลัพธ์ที่ดีที่สุดแก่คุณ เพื่อช่วยแก้ไขปัญหาควอนติเซชั่นฉันจะลดขนาดของพิกเซลเป็น 16 หรือ 8 บิตดำ / ขาว จากนั้นคุณใช้การจัดเรียงชิ้นส่วนแบบ 64 บิตแบบขนานจากนั้นใช้เพื่อสรุปขอบระหว่างรูปภาพ

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