การสร้างปัญหาการเพิ่มประสิทธิภาพ combinatorial ที่น่าสนใจ


9

ฉันกำลังสอนหลักสูตรเกี่ยวกับเมตา - ฮิวริสติกและต้องการสร้างตัวอย่างที่น่าสนใจของปัญหา combinatorial แบบคลาสสิกสำหรับโครงการระยะ ให้ความสำคัญกับ TSP เราแก้ปัญหากราฟที่มีขนาดตั้งแต่ขึ้นไป ฉันพยายามสร้างกราฟที่มีเมทริกซ์ราคาด้วยค่าที่นำมาจากการสุ่มและพบว่า (ตามที่คาดไว้) ฮิสโตแกรมสำหรับต้นทุนเส้นทาง (วาดโดยการสุ่มเส้นทางสุ่มจำนวนมาก) ได้ การกระจายปกติที่แคบมาก (คือแต่อยู่ที่ ) ซึ่งหมายความว่าในความคิดของฉันว่าปัญหาเป็นเรื่องง่ายมากเนื่องจากเส้นทางแบบสุ่มส่วนใหญ่จะต่ำกว่าค่าเฉลี่ยและเส้นทางต้นทุนขั้นต่ำใกล้เคียงกับเส้นทางแบบสุ่ม200U(0,1)μ 100σ4

ดังนั้นฉันจึงลองวิธีต่อไปนี้: หลังจากสร้าง -matrix แล้วให้เดินสุ่มรอบกราฟและสุ่ม (เบอร์นูลลีที่มี ) สองเท่าหรือลดค่าของขอบลงครึ่งหนึ่ง นี้มีแนวโน้มที่จะลดค่าทั้งหมดในที่สุดก็ถึงศูนย์ แต่ถ้าผมใช้เวลาเพียงตัวเลขทางขวาของขั้นตอนที่ผมจะได้รับการจัดจำหน่ายกับรอบและรอบ1U(0,1)p=0.5μ2σ1

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


3
มองหาไลบรารีของการวัดประสิทธิภาพ TSP ตามที่ศึกษาใน OR (เช่นค้นหางานใน TSP โดย Applegate และคณะเป็นต้นที่นี่ )
Neal Young

2
มีTSPLIB ที่มีหลายกรณี
adrianN

ขอบคุณฉันตรวจสอบลิงก์และเป็นประโยชน์ แต่คำถามของฉันเกี่ยวกับการสร้างอินสแตนซ์ไม่ใช่เพราะฉันต้องการแก้ไขตัวอย่างเฉพาะ แต่เพราะฉันมองหาความเข้าใจในสิ่งที่ทำให้เกิดปัญหาเกี่ยวกับ combinatorial ที่ดี ปัญหาอื่น ๆ นอกเหนือจาก TSP
Alejandro Piad

โพสต์ที่เกี่ยวข้อง: cstheory.stackexchange.com/questions/739/…
Neal Young

1
@Alejandro ปัญหากลุ่มที่ซ่อนอยู่อาจเป็นตัวอย่างของสิ่งที่คุณกำลังมองหา นอกจากนี้คุณอาจค้นหาการวิจัยว่าอินสแตนซ์ความพึงพอใจแบบสุ่มใดที่พิจารณาว่ายาก
Neal Young

คำตอบ:


6

วิธีการทั่วไปในการสร้างอินสแตนซ์ที่ยากขึ้นมีดังนี้:

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

ตัวอย่างเช่นสำหรับ TSP คุณสามารถทำสิ่งต่อไปนี้ สร้างอินสแตนซ์ปัญหาสุ่มโดยเลือกสุ่มยู(0,1)เมทริกซ์ต้นทุน จากนั้นปรับอินสแตนซ์ปัญหาเพื่อซ่อนวิธีแก้ปัญหาที่ดีกว่ามากในนั้น: เลือกการเดินทางที่เยี่ยมชมแต่ละจุดสุดยอดหนึ่งครั้งและลดน้ำหนักขอบของทัวร์นั้น (เช่นสร้างแบบสุ่มจากยู(0,) ที่ไหน <1; ลดน้ำหนักที่มีอยู่ หรือปรับเปลี่ยนขอบที่มีอยู่ด้วยความน่าจะเป็นคงที่บางอย่าง) ขั้นตอนการปรับนี้ทำให้มั่นใจได้ว่าทางออกที่ดีที่สุดที่มีความน่าจะเป็นสูงคือทัวร์พิเศษที่คุณเลือก หากคุณโชคดีและคุณเลือกการฝังที่เหมาะสมจะไม่ง่ายเลยที่จะจดจำตำแหน่งที่คุณซ่อนโซลูชันพิเศษไว้

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

อินสแตนซ์ของปัญหาที่เกิดขึ้นอาจจะยากแต่พวกเขาจะน่าสนใจจากมุมมองการปฏิบัติใด ๆ ฉันไม่รู้ เอาชนะฉัน พวกเขาดูเป็นธรรมสำหรับฉัน แต่ฉันรู้อะไร

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


ฉันชอบวิธีการนี้มากจริง ๆ แล้วใกล้เคียงกับสิ่งที่ฉันพยายามทำมากที่สุดและดูเหมือนจะปรับตัวได้ดีกับปัญหาที่แตกต่างกัน แรงจูงใจเริ่มต้นของฉันคือการทำปัญหาการทดสอบสำหรับนักเรียนดังนั้นแม้ว่าฉันจะได้รับปัญหาจริงคำ แต่เซิร์ฟเวอร์ฉันได้ดีสำหรับสถานการณ์ที่ค่อนข้างเทียมนี้ (พยายามอัลกอริทึมนักเรียนชั้นประถมศึกษาปี) ไม่ว่าในกรณีใดฉันจะปรับตัวให้เข้ากับความต้องการด้านการวิจัยของฉันด้วย แต่นั่นจะต้องดูอย่างใกล้ชิดดังที่คุณพูดเพื่อพิจารณาว่าอินสแตนซ์ที่สร้างขึ้นนั้นมีความเป็นตัวแทนเพียงพอหรือไม่ ขอบคุณมากคุณได้รับ +1 และการยอมรับของฉัน
Alejandro Piad

3

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

ภายใต้วิธีการนี้มีคำจำกัดความตามธรรมชาติของคำว่า "น่าสนใจ" ซึ่งเป็นกรณีที่ไม่สามารถแก้ไขได้ในเวลา P และวิธีนี้รับประกันว่าจะให้กรณียากสำหรับแฟตัวเลขที่ไม่ใช่เรียบมิฉะนั้นก็จะแก้ไขคำถามเปิดที่สำคัญในทฤษฎีความซับซ้อนเช่นความแข็งของแฟ

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

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


1
ฉันชอบวิธีการแปลงแม้ว่าคุณจะไม่ได้ให้ลิงก์เพิ่มเติมที่เกี่ยวข้องกับ TSP โดยเฉพาะ แต่อย่างไรก็ตามด้วยความขอบคุณสำหรับแนวคิดนี้ฉันจะสำรวจลึกยิ่งขึ้น คุณได้ +1 ของฉัน
Alejandro Piad

1
@alejandro ขอบคุณตกลงลิงค์นี้ เห็นเช่นเริ่มต้นที่ 28 สไลด์ที่นี่ [ระดับระดับปริญญาตรี] CMSC 451: SAT, ระบายสี, มิลรอบ TSP สไลด์โดย: คาร์ลคิงส์ การแปลง SAT →วงจร Hamiltonian (TSP) อาจมีวิธีการแปลงที่มีประสิทธิภาพมากขึ้น (มีค่าใช้จ่ายน้อยกว่า) หรือในแง่มุมอื่น ๆ ที่เหมาะสมในวรรณคดีหากเป็นสิ่งที่ต้องการ หวังว่าจะได้ยินการทำงานของคุณต่อไปอาจตอบกลับที่นี่หรือในบล็อกของฉันหากคุณต้องการ
vzn

1
ฉันตรวจสอบ pdf อยู่ในระดับสูงมาก แต่พอเข้าใจได้ แม้ว่าตอนนี้ฉันจะได้รับสิ่งที่ฉันต้องการด้วยคำตอบ @DW แนวทางของคุณน่าสนใจมากสำหรับฉัน ฉันจะต้องลองด้วยตัวเอง ฉันเคยเห็นการลดลงก่อนหน้านี้ (ในหลักสูตรระดับปริญญาตรีที่ซับซ้อน) แต่ไม่เคยคิดที่จะนำไปใช้จริงโดยเฉพาะเพื่อสร้างอินสแตนซ์ที่ยาก ฉันมีความสนใจในระยะยาวในการปรับให้เหมาะสมและ metaheuristic และหนึ่งในพื้นที่ที่น่าสนใจของฉันคือการสร้างปัญหามาตรฐานที่น่าสนใจ BTW เพิ่งตรวจสอบบล็อกของคุณจะกลับมาอีกแน่นอน !!!
Alejandro Piad
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.