มันเป็นการดีที่ยอมรับว่าทุก matroidและฟังก์ชั่นน้ำหนักใด ๆมีออกจากอัลกอริทึมซึ่งผลตอบแทนพื้นฐานน้ำหนักสูงสุดของMดังนั้นทิศทางกลับกันเป็นจริงหรือไม่ นั่นคือถ้ามีอัลกอริทึมโลภแล้วก็ต้องมีโครงสร้าง matroid ด้วย
มันเป็นการดีที่ยอมรับว่าทุก matroidและฟังก์ชั่นน้ำหนักใด ๆมีออกจากอัลกอริทึมซึ่งผลตอบแทนพื้นฐานน้ำหนักสูงสุดของMดังนั้นทิศทางกลับกันเป็นจริงหรือไม่ นั่นคือถ้ามีอัลกอริทึมโลภแล้วก็ต้องมีโครงสร้าง matroid ด้วย
คำตอบ:
ที่จริงแล้วคำอธิบายที่สมบูรณ์และทั่วไปของปัญหาที่สามารถแก้ไขได้โดยขั้นตอนวิธีโลภเป็นฝัง matroidซึ่ง generalizes ทั้งแนวคิดของ matroid และของที่greedoid คำตอบคือไม่ - ปัญหาที่แก้ไขได้โดยอัลกอริทึมโลภไม่จำเป็นต้องมีโครงสร้างของ matroid แต่มันจะมีโครงสร้างของการฝัง matroid (ซึ่งก็คืออนิจจาซับซ้อนกว่า)
แบบจำลองทางจิตสำหรับสิ่งนี้อาจเป็นการค้นหาต้นไม้ที่ครอบคลุมน้อยที่สุด โครงสร้างที่ใช้โดยอัลกอริทึมของ Kruskal เป็น matroid แต่ที่ใช้โดยอัลกอริทึมของ Prim (ซึ่งต้องใช้โหนดเริ่มต้น) ไม่ใช่ (อย่างไรก็ตามมันเป็น greedoid - และการฝัง matroid)
เฮลแมนและคณะ (1993) ในเอกสารของพวกเขาลักษณะที่แน่นอนของโครงสร้างโลภกำหนดความคิดของพวกเขาของอัลกอริทึมโลภในแง่ของระบบการตั้งค่าซึ่งเป็นพิธีการเดียวกับที่ใช้สำหรับ matroids และ greedoids ระบบชุด ประกอบด้วยชุดและคอลเลกชันของส่วนย่อยของ , ที่เรียกว่าชุดที่เป็นไปได้ พื้นฐานสำหรับระบบชุดคือชุดที่เป็นไปได้สูงสุดที่เป็นชุดที่จะเป็นไปได้ แต่ไม่มีอยู่ในชุดที่เป็นไปได้อื่น ๆ ฟังก์ชันวัตถุประสงค์เชื่อมโยงย่อยของแต่ละที่มีค่า S C S f : 2 S → R S ปัญหาการหาค่าเหมาะที่สุดในแบบทางการนี้ประกอบด้วยการค้นหาพื้นฐานของมูลค่าเป้าหมายสูงสุดสำหรับระบบชุดที่กำหนดและฟังก์ชันวัตถุประสงค์
อัลกอริทึมโลภที่กำหนดไว้ในแง่ของพิธีการนี้ค่อนข้างง่าย: คุณเริ่มต้นด้วยชุดที่ว่างเปล่าและเพิ่มองค์ประกอบเดียวอย่างต่อเนื่องจนกว่าคุณจะถึงพื้นฐานเสมอให้แน่ใจว่า (i) ชุดของคุณเป็นไปได้ในแต่ละขั้นตอนและ ( ii) องค์ประกอบที่คุณเพิ่มจะทำให้ฟังก์ชั่นวัตถุประสงค์ของผลลัพธ์เป็นผลลัพธ์สูงสุด องค์ประกอบทางเลือกทั้งหมดที่คุณสามารถเพิ่มได้ (นั่นคือในเชิงแนวคิดคุณลองเพิ่มทางเลือกที่เป็นไปได้ทั้งหมดแล้วเลือกตัวเลือกที่ให้มูลค่าสูงสุดตามวัตถุประสงค์)
คุณอาจจะอาจจะเถียงว่าอาจจะมีรูปแบบอื่น ๆ ของอัลกอริทึมโลภ แต่มีหลายตำราเกี่ยวกับขั้นตอนวิธีการและการเพิ่มประสิทธิภาพ combinatorial ที่อธิบายขั้นตอนวิธีการนี้ตามการตั้งค่าระบบธึม นั่นไม่ได้ป้องกันคุณจากการอธิบายบางสิ่งที่ไม่เหมาะสม แต่อาจเรียกได้ว่าเป็นโลภ (ถึงกระนั้นสิ่งนี้จะครอบคลุมสิ่งใดก็ตามที่อาจมีโครงสร้าง matroid เช่นแม้ว่ามันจะเป็นเรื่องทั่วไปมากขึ้น)
สิ่งที่ Helman และคณะ ทำคือพวกเขาอธิบายเมื่ออัลกอริทึมนี้จะทำงาน โดยเฉพาะอย่างยิ่ง:
พวกเขาแสดงให้เห็นว่าสำหรับฟังก์ชั่นวัตถุประสงค์เชิงเส้น (ที่ค่าวัตถุประสงค์คือผลรวมของน้ำหนักองค์ประกอบ), อัลกอริทึมโลภจะทำงานตรงกับโครงสร้างที่พวกเขากำหนดว่าเป็นการฝัง matroid;
พวกเขาให้ลักษณะที่คล้ายกันสำหรับวัตถุประสงค์คอขวดที่เรียกว่า (ที่ค่าวัตถุประสงค์ของชุดเท่ากับค่าต่ำสุดในแต่ละองค์ประกอบน้ำหนัก); และ
พวกเขาให้ลักษณะที่แน่นอนของฟังก์ชั่นวัตถุประสงค์ (เกินกว่าเส้นตรง) ได้รับการปรับให้เหมาะสมโดยอัลกอริทึมโลภในงานแต่งงาน matroid
อัลกอริทึมโลภไม่ได้เป็นแนวคิดที่กำหนดไว้อย่างเป็นทางการ มีหลายรุ่นที่พยายามจับภาพความคิดที่เข้าใจง่ายนี้ แต่ไม่มีความเห็นพ้องกันเกี่ยวกับอัลกอริทึมโลภ หากคุณไม่ได้ระบุคำจำกัดความที่เป็นทางการของสิ่งที่คุณหมายถึงโดยอัลกอริทึมโลภคำถามจะไม่สามารถตอบได้ว่าใช่หรือไม่ใช่
มีลักษณะทั่วไปของmatroids ที่เรียกว่าgreedoidซึ่งเป็นแรงบันดาลใจจากอัลกอริทึมโลภสิ่งที่คุณอาจต้องการดู
พิจารณาปัญหาต่อไปนี้: ยูโรเหรียญโซ่: ด้วยจำนวนเงินที่ไม่ จำกัด 1,2,5,10 ยูโรธนบัตรจ่าย X ยูโรโดยใช้ธนบัตรน้อยที่สุด สิ่งนี้สามารถแก้ไขได้โดยใช้อัลกอริธึมโลภซึ่งจะทำให้ทราบได้มากที่สุด แต่ไม่มีโครงสร้าง matroid ในปัญหานี้
ความครอบคลุมหลุม: มีรูในตำแหน่ง x_1, x_2, ... , x_n คุณมีความยาว 10 ซม. ปะรูที่ใช้ให้น้อยที่สุดเท่าที่จะทำได้ อีกครั้งนี้สามารถแก้ไขได้ในแบบโลภ (เพียงวางแพทช์ให้ถูกต้องเท่าที่จะทำได้) แต่ไม่มีโครงสร้าง matroid