อัลกอริทึมโลภทุกตัวมีโครงสร้าง matroid หรือไม่?


13

มันเป็นการดีที่ยอมรับว่าทุก matroidและฟังก์ชั่นน้ำหนักใด ๆมีออกจากอัลกอริทึมซึ่งผลตอบแทนพื้นฐานน้ำหนักสูงสุดของMดังนั้นทิศทางกลับกันเป็นจริงหรือไม่ นั่นคือถ้ามีอัลกอริทึมโลภแล้วก็ต้องมีโครงสร้าง matroid ด้วยMwGreedyBasis(M,w)M


อัลกอริธึมของ Dijkstra นั้นถือว่าเป็นอัลกอริทึมโลภ (เช่นดูหัวข้อ 4.4 ของ "การออกแบบอัลกอริทึม" โดย Kleinberg และ Tardos) ฉันไม่รู้การแปล matroid ของเส้นทางที่สั้นที่สุดในแหล่งเดียว
Neal Young

การแบ่งพาร์ติชันชุดของช่วงเวลาจริงเป็นจำนวนต่ำสุดของชุดย่อย pairwise-disjoint มีอัลกอริทึมโลภธรรมชาติ (ระบุช่วงเวลาตามเวลาเริ่มต้นสำหรับการเพิ่มแต่ละชุดลงในชุดย่อยที่มีอยู่หากเป็นไปได้เริ่มต้นชุดย่อยใหม่ดูบทที่ 4 ของ Kleinberg และ Tardos) ปัญหานี้สามารถเข้าใจได้ว่าเป็น matroid หรือไม่?
Neal Young

คำตอบ:


12

ที่จริงแล้วคำอธิบายที่สมบูรณ์และทั่วไปของปัญหาที่สามารถแก้ไขได้โดยขั้นตอนวิธีโลภเป็นฝัง matroidซึ่ง generalizes ทั้งแนวคิดของ matroid และของที่greedoid คำตอบคือไม่ - ปัญหาที่แก้ไขได้โดยอัลกอริทึมโลภไม่จำเป็นต้องมีโครงสร้างของ matroid แต่มันจะมีโครงสร้างของการฝัง matroid (ซึ่งก็คืออนิจจาซับซ้อนกว่า)

แบบจำลองทางจิตสำหรับสิ่งนี้อาจเป็นการค้นหาต้นไม้ที่ครอบคลุมน้อยที่สุด โครงสร้างที่ใช้โดยอัลกอริทึมของ Kruskal เป็น matroid แต่ที่ใช้โดยอัลกอริทึมของ Prim (ซึ่งต้องใช้โหนดเริ่มต้น) ไม่ใช่ (อย่างไรก็ตามมันเป็น greedoid - และการฝัง matroid)

เฮลแมนและคณะ (1993) ในเอกสารของพวกเขาลักษณะที่แน่นอนของโครงสร้างโลภกำหนดความคิดของพวกเขาของอัลกอริทึมโลภในแง่ของระบบการตั้งค่าซึ่งเป็นพิธีการเดียวกับที่ใช้สำหรับ matroids และ greedoids ระบบชุด ประกอบด้วยชุดและคอลเลกชันของส่วนย่อยของ , ที่เรียกว่าชุดที่เป็นไปได้ พื้นฐานสำหรับระบบชุดคือชุดที่เป็นไปได้สูงสุดที่เป็นชุดที่จะเป็นไปได้ แต่ไม่มีอยู่ในชุดที่เป็นไปได้อื่น ๆ ฟังก์ชันวัตถุประสงค์เชื่อมโยงย่อยของแต่ละที่มีค่า S C S f : 2 SR S(S,C)SCS f:2SRSปัญหาการหาค่าเหมาะที่สุดในแบบทางการนี้ประกอบด้วยการค้นหาพื้นฐานของมูลค่าเป้าหมายสูงสุดสำหรับระบบชุดที่กำหนดและฟังก์ชันวัตถุประสงค์

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

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

สิ่งที่ Helman และคณะ ทำคือพวกเขาอธิบายเมื่ออัลกอริทึมนี้จะทำงาน โดยเฉพาะอย่างยิ่ง:

  1. พวกเขาแสดงให้เห็นว่าสำหรับฟังก์ชั่นวัตถุประสงค์เชิงเส้น (ที่ค่าวัตถุประสงค์คือผลรวมของน้ำหนักองค์ประกอบ), อัลกอริทึมโลภจะทำงานตรงกับโครงสร้างที่พวกเขากำหนดว่าเป็นการฝัง matroid;

  2. พวกเขาให้ลักษณะที่คล้ายกันสำหรับวัตถุประสงค์คอขวดที่เรียกว่า (ที่ค่าวัตถุประสงค์ของชุดเท่ากับค่าต่ำสุดในแต่ละองค์ประกอบน้ำหนัก); และ

  3. พวกเขาให้ลักษณะที่แน่นอนของฟังก์ชั่นวัตถุประสงค์ (เกินกว่าเส้นตรง) ได้รับการปรับให้เหมาะสมโดยอัลกอริทึมโลภในงานแต่งงาน matroid


3
คุณช่วยอธิบายความหมายของอัลกอริทึมแบบโลภได้อย่างไร
Kaveh

1
ขยายคำตอบของฉันเพื่ออธิบายว่าพวกเขาเป็นพิธีการอะไร
Magnus Lie Hetland

11

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

มีลักษณะทั่วไปของmatroids ที่เรียกว่าgreedoidซึ่งเป็นแรงบันดาลใจจากอัลกอริทึมโลภสิ่งที่คุณอาจต้องการดู


ไม่จำเป็นต้องมีคำจำกัดความที่เป็นทางการหากเราเห็นด้วยกับคุณสมบัติบางอย่างของคลาสของอัลกอริทึมโลภ ตัวอย่างเช่นถ้าเราเห็นด้วยว่าอัลกอริทึมโลภทุกตัวมีคุณสมบัติ (กำหนดอย่างเป็นทางการ) P และเราแสดงให้เห็นว่าอัลกอริทึมที่ตอบสนอง P สามารถกำหนดบนเมทรอยด์ซึ่งจะให้คำตอบเชิงบวกต่อคำถามของ OP ในทำนองเดียวกันหากเราตกลงกันว่าอัลกอริทึมบางอย่างเป็นโลภและเราแสดงให้เห็นว่ามันไม่สามารถเป็นอัลกอริธึมโลภของ matroid ได้นั่นจะทำให้ได้คำตอบเชิงลบ
Laconian เดี่ยว

2

พิจารณาปัญหาต่อไปนี้: ยูโรเหรียญโซ่: ด้วยจำนวนเงินที่ไม่ จำกัด 1,2,5,10 ยูโรธนบัตรจ่าย X ยูโรโดยใช้ธนบัตรน้อยที่สุด สิ่งนี้สามารถแก้ไขได้โดยใช้อัลกอริธึมโลภซึ่งจะทำให้ทราบได้มากที่สุด แต่ไม่มีโครงสร้าง matroid ในปัญหานี้

ความครอบคลุมหลุม: มีรูในตำแหน่ง x_1, x_2, ... , x_n คุณมีความยาว 10 ซม. ปะรูที่ใช้ให้น้อยที่สุดเท่าที่จะทำได้ อีกครั้งนี้สามารถแก้ไขได้ในแบบโลภ (เพียงวางแพทช์ให้ถูกต้องเท่าที่จะทำได้) แต่ไม่มีโครงสร้าง matroid


ขอบคุณฉันมีข้อสงสัย แต่ก็ไม่แน่ใจ ดังนั้นหลังจากทั้งหมดเราต้องค้นหาอัลกอริทึมโลภแม้ว่าโครงสร้าง matroid ไม่มีอยู่

1
@ user3373748 ฉันมักจะมองหาโปรแกรมแบบไดนามิก โลภเป็น DP ที่เสื่อมสภาพ

1
(ไม่ใช่เรื่องพิถีพิถัน แต่ไม่มีโน้ต 1 หรือ 2 ยูโรคุณอาจต้องการเปลี่ยนชุดของค่าเป็น {5, 10, 20, 50, 100, 200} หรือใช้ถ้อยคำใหม่ ;-))
Anthony Labarre

โปรดทราบว่าอัลกอริทึมการเปลี่ยนเหรียญที่อธิบายไว้ใช้งานได้สำหรับ {1,2,5,10} แต่อาจไม่คำนวณผลลัพธ์ที่ดีที่สุดสำหรับค่าอื่น ๆ ตัวอย่าง: ด้วย {1,3,4} ทางออกที่ดีที่สุดสำหรับ 6 จะเป็น [3,3] แต่อัลกอริทึมจะกลับมา [4,1,1]
Socowi

1
มีโครงสร้าง matroid สำหรับปัญหาการเปลี่ยนเหรียญคือ - gauss.ececs.uc.edu/Courses/C671/html/Homework/hw5_sol.html
Tushant Mittal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.