กำลังสร้างอินพุตสำหรับอัลกอริทึมกราฟทดสอบแบบสุ่มหรือไม่


19

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

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

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

การแจกแจงที่มีประโยชน์คืออะไร มีประโยชน์ที่นี่หมายความว่า

  • กราฟมีแนวโน้มที่จะทดสอบอัลกอริทึมที่อยู่ในมือและ
  • พวกเขาสามารถสร้างได้อย่างมีประสิทธิภาพและมีประสิทธิภาพ

ฉันรู้ว่ามีหลายรุ่นสำหรับกราฟสุ่มดังนั้นฉันขอขอบคุณความเข้าใจที่ดีที่สุดสำหรับการสร้างกราฟในเรื่องนี้

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


คำถามนี้ถูกจุดประกายโดยที่หนึ่ง
กราฟิลส์

คำตอบ:


15

กราฟสุ่มที่มีโทโพโลยีขนาดเล็กของโลก

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

วัตต์และ Strogatz [1] เสนอรูปแบบสำหรับกราฟโลกขนาดเล็ก ก่อนอื่นเราเริ่มด้วยกราฟปกติ ความผิดปกติจะถูกนำเข้าสู่กราฟโดยการสุ่ม rewiring ขอบที่มีความน่าจะเป็นของแต่ละหน้าถ้ากราฟจะสมบูรณ์และเรียงลำดับอย่างสมบูรณ์ ถ้ากราฟจะสุ่มและไม่เป็นระเบียบอย่างสมบูรณ์ ค่าผลิตกราฟที่ไม่ปกติอย่างสมบูรณ์หรือไม่เป็นระเบียบอย่างสมบูรณ์ กราฟไม่ได้มีโครงสร้างโลกขนาดเล็กสำหรับและ 1pp=0p=10<p<1p=0p=1

Watts และ Strogatz เริ่มต้นจากขัดแตะวงแหวนด้วย nodes และเพื่อนบ้านที่ใกล้ที่สุด โหนดถูกเลือกจากขัดแตะอย่างสม่ำเสมอและขอบที่ rewired จะถูกเชื่อมต่อกับมัน หากการเดินสายใหม่จะสร้างขอบที่ซ้ำกันมันจะไม่ถูกแตะต้อง สำหรับกราฟขนาดใหญ่กระจัดกระจายพวกเขาต้องการโดยที่ทำให้แน่ใจว่ากราฟยังคงเชื่อมต่ออยู่nknkln(n)1kln(n)

แบบจำลองของ Watts and Strogatz นั้นค่อนข้างได้รับความนิยม แต่มีข้อเสียอยู่บ้าง วอลช์ [2] ตรวจสอบผลกระทบของการสุ่มและเริ่มกลยุทธ์ในกราฟที่สร้างขึ้นโดยใช้แบบจำลอง นอกจากนี้ยังมีบทความโดย Virtanen [3] ซึ่งครอบคลุมรุ่นอื่น ๆ ที่ได้แรงบันดาลใจจากความต้องการในการสร้างแบบจำลองที่เหมือนจริงของระบบที่ซับซ้อน

สุ่มระนาบกราฟง่าย ๆ

การสร้างกราฟระนาบแบบง่าย ๆ แบบสุ่มบนจุดยอดอย่างสม่ำเสมอที่การสุ่มสามารถทำได้อย่างมีประสิทธิภาพ จำนวนของกราฟระนาบที่มีจุดยอด,สามารถกำหนดได้โดยใช้ฟังก์ชั่นการสร้าง ค่าของสำหรับคือและตามลำดับ เนื่องจากตัวเลขมีความซับซ้อนเกินไปจึงไม่คาดว่าจะพบสูตรปิดสำหรับพวกเขา Giménezและ Noy [4] ให้การประมาณค่า asymptotic ที่แม่นยำสำหรับการเติบโตของ : โดยที่และn กรัมn กรัมn 1 n 9 1 , 2 , 8 , 64 , 1023 , 32071 , 1823707 , 163947848 20402420291 กรัมn กรัมn ~ กรัมn - 7 / 2 γ n n ! , กรัมγ กรัม0.42609 γ 27.22687nngngn1n91,2,8,64,1023,32071,1823707,16394784820402420291gn

gngn7/2γnn!,
gγจะคงที่กำหนดวิเคราะห์ที่มีค่าโดยประมาณและ27.22687g0.42609γ27.22687

การพิสูจน์ผลลัพธ์จะนำไปสู่อัลกอริทึมที่มีประสิทธิภาพมากโดย Fusy [5] Fusy ให้ขนาดตัวสร้างแบบสุ่มโดยประมาณและยังเป็นตัวสร้างแบบสุ่มขนาดที่แน่นอนของกราฟภาพถ่าย อัลกอริทึมขนาดโดยประมาณทำงานในเวลาเชิงเส้นในขณะที่อัลกอริทึมขนาดที่แน่นอนทำงานในเวลากำลังสอง ขั้นตอนวิธีการจะขึ้นอยู่กับการสลายตัวตามระดับต่อเนื่องของการเชื่อมต่อ: ภาพถ่ายกราฟเชื่อมต่อ 2 เชื่อมต่อ 3 เชื่อมต่อไบนารีต้นไม้→การ→การ→การ

อัลกอริธึมนั้นดำเนินการโดยการแปลการสลายตัวของกราฟภาพถ่ายเป็นเครื่องกำเนิดไฟฟ้าแบบสุ่มโดยใช้กรอบของตัวอย่างของ Boltzmann โดย Duchon, Flajolet, Louchard และ Schaeffer [6] รับคลาส combinatorial ตัวอย่าง Boltzmann ดึงวัตถุขนาดมีความน่าจะเป็นโดยที่คือพารามิเตอร์จริงบางค่าที่ปรับโดยผู้ใช้ นอกจากนี้การกระจายความน่าจะเป็นถูกกระจายไปทั่ววัตถุทั้งหมดของชั้นเรียนด้วยคุณสมบัติที่วัตถุที่มีขนาดเดียวกันมีความน่าจะเป็นแบบเดียวกันที่เกิดขึ้น นอกจากนี้การแจกแจงความน่าจะเป็นแบบเดียวกันนั้น จำกัด เมื่อขนาดคงที่x n xnxnx

สำหรับข้อมูลเบื้องต้นที่มีน้ำหนักเบาและดูงานนำเสนอโดย Fusy


[1] DJ Watts และ SH Strogatz พลวัตโดยรวมของเครือข่าย 'โลกขนาดเล็ก' ธรรมชาติ, 393: 440-442 1998

[2] Toby Walsh ค้นหาในโลกใบเล็ก การประชุมวิชาการนานาชาติเรื่องปัญญาประดิษฐ์ (IJCAI-99-Vol2) ครั้งที่ 16, หน้า 1172-1177, 1999 .

[3] Satu Virtanen คุณสมบัติของแบบจำลองกราฟสุ่มแบบ nonuniform รายงานการวิจัย A77, มหาวิทยาลัยเทคโนโลยีแห่งเฮลซิงกิ, ห้องปฏิบัติการวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี, 2546 .

[4] O. Giménezและ M. Noy การแจงนับ asymptotic และ จำกัด กฎหมายของกราฟระนาบ, arXiv math.CO/0501269 นามธรรมขยายได้ปรากฏอยู่ในคณิตศาสตร์ไม่ต่อเนื่องและล้ำหน้าด้วย oretical วิทยาศาสตร์คอมพิวเตอร์ AD (2005), 147-156

[5] E. Fusy สมการกำลังสองและการสร้างเส้นเวลาของกราฟเชิงระนาบ, คณิตศาสตร์ไม่ต่อเนื่องและทฤษฎีวิทยาศาสตร์คอมพิวเตอร์ AD (2005), 125-138

[6] P. Duchon, P. Flajolet, G. Louchard และ G. Schaeffer ตัวอย่าง Boltzmann สำหรับการสร้างแบบสุ่มของโครงสร้าง combinatorial Combinatorics, ความน่าจะเป็นและคอมพิวเตอร์ 13 (4-5): 577-625 2004


3
+1 (00) สำหรับการกล่าวถึงการสุ่มตัวอย่าง Boltzmann IMHO แคลคูลัสรุ่นสุ่มอัตโนมัติที่ทรงพลังที่สุด !!
Jérémie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.