จำนวนขั้นต่ำของการเดินทางช้อปปิ้งสำหรับกลุ่มคนที่จะซื้อของขวัญให้กัน


10

เรามีกลุ่มคนคน เราได้รับรายชื่อผู้ที่ต้องซื้อของขวัญสำหรับผู้ที่อยู่ในกลุ่ม แต่ละคนอาจต้องซื้อ / รับของขวัญจำนวนมากหรืออาจจะไม่มีเลยก็ได้ ในทริปช็อปปิ้งกลุ่มย่อยของผู้คนเดินทางไปด้วยกันที่ร้านเดียวกันและซื้อของขวัญสำหรับทุกคนที่ไม่ได้อยู่ที่ร้าน พวกเขาอาจไม่ซื้อของขวัญให้กับคนอื่นในทริปช็อปปิ้งเดียวกันเพราะจะไม่แปลกใจเลย บุคคลอาจไปเที่ยวช้อปปิ้งหลายรายการ เราต้องการลดจำนวนการเดินทางช้อปปิ้งที่จำเป็นสำหรับทุกคนในการซื้อของขวัญทั้งหมดที่พวกเขาต้องการnn

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

  • เที่ยว 1: 1, 2, 3 ไปซื้อของ

  • เที่ยว 2: 1, 4, 5 ไปซื้อของ

  • เที่ยว 3: 2, 4 ไปซื้อของ

  • ทริป 4: 3, 5 ไปซื้อของ

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

เราอาจจะคิดว่าการป้อนข้อมูลที่เป็นกราฟกำกับบนจุดที่ขอบหมายความว่าบุคคลที่ต้องซื้อของขวัญสำหรับบุคคลวีเป้าหมายคือการหาชุดของ bicliquesเช่นที่มีน้อยและขอบชุดของกราฟเป็นส่วนหนึ่งของt_i) นอกจากนี้ในการขยายคำจำกัดความของ bicliques ไปยังกราฟที่กำกับแล้ว bicliqueจะมีเฉพาะขอบที่แผนที่ถึงG T ฉัน G S ฉัน × T ฉันE ฉันG n ( u , v ) u v ( S 1 , T 1 ) , , ( S k , T k ) k E ฉัน ( S i × T i ) ( S i , T i ) S In(u,v)uv(S1,T1),,(Sk,Tk)kEi(Si×Ti)(Si,Ti)SiTi. สิ่งนี้แตกต่างจากปัญหาปก biclique ที่เราไม่ต้องการให้แต่ละ biclique เป็นกราฟย่อยของ (เราไม่ต้องการสำหรับแต่ละ )GSi×TiEi

โดยเฉพาะฉันจะยอมรับคำตอบที่:

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

สำหรับบันทึกฉันไม่เห็นปัญหานี้ทุกที่ฉันแค่สงสัยเกี่ยวกับมันสำหรับความอยากรู้อยากเห็นของฉันเอง

คำตอบ:


2

ปัญหานี้เป็นปัญหายาก เพื่อแสดงสิ่งนี้ฉันจะแก้ไขปัญหานี้ (การเพิ่มประสิทธิภาพ) เป็นปัญหาการตัดสินใจก่อน แล้วฉัน reformulate ปัญหาที่เป็นหนึ่งเทียบเท่าจากที่ที่มันค่อนข้างง่ายที่จะได้รับการลดลงจากที่kปัญหา -coloring ซึ่งเป็น NP-ยากสำหรับการใด ๆk 3kk3

การกำหนดปัญหาสั้น ๆ มีดังต่อไปนี้:

เมื่อมีบุคคลnคนและกราฟGที่เข้ารหัสความสัมพันธ์ 'การให้ของขวัญ' พบจำนวนการเดินทางขั้นต่ำที่ต้องการเพื่อให้ของขวัญทั้งหมดสามารถซื้อได้โดยไม่ทำลายความประหลาดใจใด ๆnG

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

ได้รับnคนและกราฟGที่ encodes ของพวกเขา 'ของขวัญ' ความสัมพันธ์และเป็นจำนวนเต็มTคือการทำให้มากที่สุดทีทริปเพียงพอที่จะซื้อของขวัญทั้งหมดโดยไม่ทำลายความผิดใด ๆnGtt

ฉันกำหนดปัญหาในการค้นหาt -multicoloring ที่เหมาะสมtของกราฟบางกราฟG = ( V , E )เป็นการหาฟังก์ชั่นมัลติคัลเลอร์c : V P ( C )ซึ่งเหมาะสมโดยที่Cคือชุดของสี ' t ' ( เช่น| C | = t ) และP ( C )เป็นชุดพลังงานของC (เช่นชุดของเซตย่อยทั้งหมดของCG=(V,E) c:VP(C)Ct|C|=tP(C)CC) ฟังก์ชั่นหลากสีเป็นที่เหมาะสมและถ้าหากทุกขอบ( U วี) Eเรามีที่( U ) ( วี )(uv)Ec(u)c(v)

ฉันอ้างว่าปัญหาการเดินทางช็อปปิ้งนั้นเทียบเท่ากับปัญหาการตัดสินใจว่ามีกราฟกำกับตัว -multicoloringttในกราฟเดียวกัน GG

หลักฐาน : ถ้าเรามีผู้กำกับที่เหมาะสม -multicoloringสำหรับที่เราเปลี่ยนชื่อสีเช่นที่แล้วพิจารณาลำดับของเดินทางซึ่งเป็น เวอร์เท็กซ์ไปช็อปปิ้งในการเดินทางหากเท่านั้น แล้วสำหรับทุกขอบเรามีว่ามีการเดินทางดังกล่าวว่าและตั้งแต่(V) ดังนั้นทริปt c c ( u ) c ( v ) T itcG C = { 1 , ... , T } เสื้อT 1 , ... , ทีทีวีทีฉันฉัน( วี) ( U วี) E T ฉันมึงT ฉันวีT ฉันGC={1,,t}tT1,,TtvTiic(v)(uv)ETiuTivTic(u)c(v)Ti เพียงพอที่จะซื้อของขวัญทั้งหมด

หากเรามีลำดับการเดินทางจากนั้นสร้างฟังก์ชันหลายสีบนชุดสีเช่นนั้น\} จากนั้นสำหรับทุก ๆ ขอบมีการเดินทางเช่นนั้นที่และ (เนื่องจากสามารถซื้อของขวัญสำหรับในการเดินทาง) ซึ่งหมายความว่าและดังนั้น(V) T 1 , , T t c C = { 1 , , t } c ( u ) = { i N | ยูT ฉัน } ( U วี) E T ฉันมึงT ฉันวีT ฉัน U v ฉัน( U ) ฉัน(T1,,TtcC={1,,t}c(u)={iN|uTi}(uv)ETiuTivTiuvic(u)v ) c ( u ) c ( v ) ic(v)c(u)c(v)

การค้นหา -multicoloring ที่เหมาะสมนั้นเป็นวิธีการแปลกใหม่ของกรณีเฉพาะของ -coloring ดังนั้นฉันสามารถแสดงการลดเวลาแบบพหุนามจาก rfloorปัญหาการเปลี่ยนสี: เนื่องจากกราฟที่ไม่ได้บอกทิศทางอันดับแรกเปลี่ยนกราฟนี้เป็น กำกับกราฟเช่นนั้นและถ้าหากหรือ ( กล่าวอีกนัยหนึ่งเราเปลี่ยนขอบที่ไม่ได้บอกทิศทางเป็นสองขอบที่กำกับ)t k ( ttkt / 2 ) G=(V,E)G=(V,E)V=V(uv)E(u,v)E(v,u)E(tt/2)G=(V,E)G=(V,E)V=V(uv)E(u,v)E(v,u)E

พิจารณาชุดใหญ่ที่สุดเช่นว่ามีอยู่ไม่มี ,เช่นว่าเซตข ชุดย่อยทั้งหมดของมีขนาดโดยที่เป็นชุดดังกล่าว ดังนั้นขนาดสูงสุดของส่วนย่อยดังกล่าวเป็นrfloor}K P ( C ) a , b K a b a b C t / 2 t = | C | ( tKP(C)a,bKababCt/2t=|C|t / 2 )(tt/2)

ถ้ามี -multicoloring ที่เหมาะสมสำหรับดังนั้นจะมีการระบายสีที่เหมาะสมซึ่งใช้ไม่เกินองค์ประกอบที่ไม่เท่ากันจาก (*) ดังนั้นนี่คือ rfloor -coloring สำหรับต้องt G ( ttGt / 2 ) P(C) ( t(tt/2) P(C) t / 2 ) G(tt/2)G

ถ้าเหมาะสม rfloorมีสีสำหรับแล้วก็มีชุด ,เช่นนั้นและมีไม่ได้อยู่ ๆ ,เช่นว่าเซตข ดังนั้นมี -multicoloring กำกับอย่างเหมาะสม( tt / 2 ) GKP(C)| C| =t| K| ( t(tt/2)GKP(C)|C|=tt / 2 ) a,bKababGt|K|(tt/2)a,bKababGt

ดังนั้นนี่คือการลดเวลาพหุนามที่ถูกต้องจาก rfloor - การแก้ไขปัญหาการช็อปปิ้งในปัจจุบันที่มีการเดินทางซึ่งหมายถึงปัญหาการช็อปปิ้งในปัจจุบันคือ NP-hard หมายเหตุว่าปัญหาการช้อปปิ้งในปัจจุบันคือรุ่น NP-สมบูรณ์เนื่องจากเราสามารถตรวจสอบได้ง่ายถ้าเป็นรายการที่ได้รับของที่มากที่สุดทริปช่วยให้เราสามารถที่จะซื้อของขวัญทั้งหมดโดยไม่ทำลายความผิด( tt / 2 ) tt(tt/2)tt


(*): หากมีหลายสีใช้ชุดสีมากกว่าชุดสีที่ไม่ใช่ 'เซตย่อย' สูงสุดหลายสีเราสามารถ 'เปลี่ยนชื่อ'เช่นนั้นได้ มันเป็น superset ของ * ยังคงเหมาะสมเนื่องจากไม่มีองค์ประกอบจากอยู่ติดกับองค์ประกอบที่แตกต่างจากเป็นปัญหาและไม่มีชุดสีใดติดกันซึ่งกันและกัน เดิม{C} ดังนั้นไม่ต้องสูญเสียของทั่วไปเราสามารถสรุปได้{C}C CC CC CCC CCCCCCCCCCCC

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

พิจารณาความสัมพันธ์ต่อไปกับสีชุดใน : สองชุดสีและมีการเชื่อมต่อและถ้าหากมีอยู่คู่ของจุดดังกล่าวว่ามีสีตั้งและสีชุดและE ความสัมพันธ์นี้สามารถแสดงโดยไม่มีทิศทางกราฟr)R CC * B , B ( , ) E G = ( CC * , R )RCCABa,baAbB(a,b)EG=(CC,R)

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

ซึ่งหมายความว่าหากมีจำนวนชุดสีน้อยกว่าหรือเท่ากับสีที่ต้องการมีอยู่ มิฉะนั้นจะไม่มีการระบายสีหลายสีที่เหมาะสมเลยเนื่องจากเป็นชุดที่ไม่ใช่ชุดย่อยที่ใหญ่ที่สุดดังนั้นเราจึงไม่สามารถระบายสีกลุ่มนี้ได้ ดังนั้นจึงจำเป็นต้องมีหลายสีG | C| CG|C|C


ในฐานะที่เป็นกราฟที่สมบูรณ์แบบบนโหนดเป็นสีสามารถและถ้าหากเรามีอย่างน้อยสีเรามีคนสามารถไปช้อปปิ้งของขวัญสำหรับแต่ละอื่น ๆ ในทริปและถ้าหากn ซึ่งหมายความว่าหากการเดินทางเพียงครั้งก็เพียงพอแล้ว หากมีของกำนัลให้ซื้อน้อยลงไม่จำเป็นต้องเดินทางเพิ่มดังนั้นนี่จึงเป็นข้อ จำกัด ทั่วไปสำหรับทุกโซลูชันn K n n n t ( tnKnnntt / 2 )nn1287016(tt/2)nn1287016


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

วิธีการกำหนดปัญหานี้ก็คือการหาที่ครอบคลุมของกราฟสองส่วนในพาร์ทิชันสำหรับบางกราฟกับโหนด เช่นปริมาณพาร์ติชั่น (เช่นการเดินทาง), ที่นี่ , น้อยที่สุดC = { ( S 1 , T 1 ) , , ( S m , T m ) } ( S i , T i ) G n mC={(S1,T1),,(Sm,Tm)}(Si,Ti)Gnm

ขั้นแรกให้สังเกตบางส่วนมาจากคำตอบอื่น ๆ :

  • กลยุทธ์โลภที่เราเลือกด้วยกราฟ bipartite ที่ปริมาณของขอบที่เหมือนกันกับคือสูงสุดไม่นำไปสู่การแก้ปัญหาที่ดีที่สุด (ตัวอย่างเคาน์เตอร์ที่แข็งแกร่งคือกราฟเต็มรูปแบบที่มีโหนด เมื่อกลยุทธ์นี้ล้มเหลวไม่ว่าจะเลือกกราฟ bipartite สูงสุดเท่าใดก็ตาม)( S i , T i ) G 6(Si,Ti)G6
  • กลยุทธ์โลภไม่เหมาะสมที่สุดสำหรับกราฟ acyclic ตามอำเภอใจพิจารณากราฟต่อไปนี้: ยากวัฏจักร ทั้งสำหรับและกราฟ bipartite ลบขอบ แต่เพียงเหมาะสมที่สุดS i = { 3 , 5 , 6 } S i = { 1 , 3 , 6 } 4 { 3 , 5 , 6 }Si={3,5,6}Si={1,3,6}4{3,5,6}
  • อัลกอริทึมโลภที่เหมาะสมที่สุดไม่สามารถเลือกขนาดของพาร์ติชันที่เลือกตามจำนวนรอบ ( ไม่ว่าขนาดใด ) ลบโดยพาร์ติชัน หากต้องการดูนี้พิจารณากราฟที่มีโหนดที่มีเป็นหนึ่งในวงจรของโหนดและโหนดในวงจรทุกคนได้ขอบขาออกเพิ่มเติมต่อโหนดเพิ่มเติมซึ่งมีขอบขาออก (ดูรูปด้านล่างนี้ ตัวอย่างที่ ) ตัวเลือกโลภที่ต้องการเพิ่มจำนวนของขอบบนวงรอบความยาวจะส่งจุดยอดทั้งหมดในรอบในการเดินทางครั้งแรก นี่เป็นสิ่งที่ไม่ดีเนื่องจากมันไม่ได้ลบขอบใด ๆ ของวัฏจักรออกและไม่สนใจn + 2 n 2 2 , B n = 4 n , B , Bn+2n22A,Bn=4nA,Bและการลบขอบทั้งหมดออกจากวงจรจะเป็นการลบขอบทั้งหมดไปยังเช่นกัน ดังนั้นตัวเลือกโลภที่ต้องการขนาดของพาร์ติชันมากกว่าการลบรอบจึงไม่เหมาะสมA,B
    4 จังหวะ

ตามข้อสังเกตเหล่านี้ผมเสนอทางเลือกที่โลภดังต่อไปนี้: เลือกดังกล่าวว่าปริมาณของรอบที่การเดินทางครั้งนี้ 'ลบ' จากเป็นสูงสุดและในกรณีของความสัมพันธ์ให้เลือกพาร์ทิชันที่มีการทับซ้อนกันสูงสุดกับหมู่ พวกเขา (เช่นดูที่ขอบไม่ได้อยู่ในรอบ)( S i , T i ) G G(Si,Ti)GG

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


1
คุณระบุ "ถ้ามี -multicoloring สำหรับดังนั้นสีนี้ใช้ไม่เกินองค์ประกอบที่ไม่เท่ากันจาก " คำสั่งนี้เป็นเท็จ ในตัวอย่างเล็กน้อยของ 3 โหนดที่ไม่ได้เชื่อมต่อมี 2-multicoloringโดยที่\} นี่เป็น 2-multicoloring ที่เหมาะสมซึ่งใช้มากกว่าองค์ประกอบที่แตกต่าง คุณหมายถึงการพูดว่า "ถ้ามี -multicoloring สำหรับดังนั้นการระบายสีดังกล่าวจะใช้ไม่เกินt G ( ttGt / 2 ) P(C)a,b,cvv(a)={1},v(b)={2},v(c)={1,2} ( 2)(tt/2)P(C)a,b,cvv(a)={1},v(b)={2},v(c)={1,2}1 ) =2tG ( t(21)=2tGt / 2 ) P(C)(tt/2)องค์ประกอบไม่เท่ากันจาก "?P(C)
Riley

นั่นคือสิ่งที่ฉันหมายถึง อีกวิธีหนึ่งในการดูคือหากเป็นt-multicoloring น้อยที่สุด (เช่นนี้ไม่ใช่ -multicolorable) จะใช้อย่างแน่นอน . เห็นได้ชัดว่าตัวอย่างที่คุณให้ไม่ใช่ตัวอย่างการปฏิรูปที่ถูกต้อง G ( t - 1 ) ( tG(t1)t / 2 )(tt/2)
จิ้งจกไม่ต่อเนื่อง

ไม่รอ. มันไม่ได้ใช้ประการ แต่อย่างมาก ( tt / 2 )(tt/2)
จิ้งจกไม่ต่อเนื่อง

ฉันเข้าใจได้ว่าคำแถลงที่แก้ไขนั้นมีเหตุผล แต่คุณสามารถพิสูจน์ได้หรือไม่? บางทีคุณก็สามารถแสดงให้เห็นว่าใด ๆ เสื้อ multicoloring อาจจะ "ดีขึ้น" เพื่อให้ multicolors ทั้งหมดที่มีองค์ประกอบของบางชุดประชุมความต้องการของขนาดและที่มีอยู่ไม่มีดังกล่าวว่าเซตข K a , b K a bKa,bKab
Riley

@Riley ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึงคำสั่งที่คุณต้องการให้ฉันทำอย่างละเอียด? ฉันได้อัปเดตคำตอบแล้วเพื่อระบุความคิดเห็นดั้งเดิมของคุณที่แนะนำ ส่วนที่เหลือของการพิสูจน์ยังคงไม่ได้รับผลกระทบ สำหรับความสัมพันธ์ของปัญหาสีหลายสีและต้นฉบับแนวคิดหลักคือสามารถมองเห็นหลายสีได้ว่าไม่มี 'ส่วนย่อย' ที่อยู่ติดกัน เนื่องจากเซตย่อย 'non-pairwise ที่ใหญ่ที่สุด' ของมีขนาดเราอาจพิจารณาชุดนั้นเป็นชุดสีและเราจะได้รับ ปัญหาการระบายสี P ( C ) ( tP(C)t / 2 )(tt/2)
จิ้งจกไม่ต่อเนื่อง

2

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

แนวคิดพื้นฐานคือการสร้างกราฟที่มีจุดสุดยอดสำหรับทุกการซื้อและขอบระหว่างการซื้อสองรายการที่ไม่สามารถเกิดขึ้นได้ในการเดินทางเดียวกัน จากนั้นเรามองหาการจัดกลุ่มการซื้อเป็นจำนวนกลุ่มที่เล็กที่สุดเท่าที่จะเป็นไปได้ ("การเดินทาง") เพื่อไม่ให้มีการซื้อสองรายการในกลุ่มเดียวกันที่ขัดแย้งกัน โดยเฉพาะถ้าเป็นรูปแบบของกราฟเดิมกำกับที่ขอบบอกว่าคนที่ต้องการจะซื้อคนของขวัญแล้วสร้าง undirected กราฟซึ่งมีจุดสุดยอดสำหรับแต่ละ edgeในและขอบ (undirected)ทุกครั้งG = ( V , E ) u v u v H = ( X , Y ) x u v u v G x u v x v w u v v w g v w v H HG=(V,E)uvuvH=(X,Y)xuvuvGxuvxvwuvและมีทั้ง (กำกับ) ขอบใน (ถ้าซื้อบางของขวัญในระหว่างการเดินทางแล้วไม่มีใครสามารถซื้อของขวัญในระหว่างการเดินทางเช่นเดียวกับที่) จุดสุดยอดการระบายสีของคือการแบ่งส่วนของการซื้อที่จำเป็น (จุดยอดใน ) ไปสู่การเดินทาง (สี) ที่ไม่ขัดแย้ง (แบ่งปันขอบ) และการใช้สีจุดสุดยอดที่มีขนาดต่ำสุดจะใช้เวลาน้อยที่สุดในการเดินทางvwGvwvHH

อาจเป็นไปได้ที่จะไปในทิศทางอื่น (ลดการระบายสีด้วยกราฟหรือปัญหา NP-hard อื่น ๆ กับปัญหาของคุณและทำให้เกิดความแข็งของ NP) โดยการปรับลดจาก 3SAT เป็น Graph Coloring (เช่นเช่น มีรายละเอียดในหน้า 10 ของบันทึกของ Jeff Erickson ) แต่ฉันไม่ได้ลองทำเอง


คำตอบนี้ยอดเยี่ยม มันเป็นสิ่งที่ฉันกำลังมองหา ในการวิเคราะห์ความซับซ้อนของเวลาของอัลกอริทึมนี้มีจุดสูงสุด (ของขวัญ) และขอบ เมื่อฉันค้นหาอัลกอริทึมบนการระบายสีกราฟทั้งหมดที่ฉันพบคือสำหรับกราฟที่มีจุดยอดมีอัลกอริธึมที่มีประสิทธิภาพมากกว่านี้ในกรณีนี้หรือไม่เนื่องจากมีขอบเขตบนพหุนามเท่ากับจำนวนขอบ? n 2 - n ( 2 n - 3 ) ( n 2 - n )n2n2 O(2nn)n(2n3)(n2n)2O(2nn)n
Riley

1
@Riley อาจไม่ตัดสินใจ -colourability,สำหรับกราฟที่มีระดับสูงสุดเป็น NP-hard อยู่แล้ว ดู [บันทึกการบรรยาย] เหล่านี้ (www-sop.inria.fr/members/Frederic.Havet/Cours/coloration.pdf) เพื่อลดกราฟจาก 3-SAT เป็นกราฟที่มีระดับสูงสุด 3k k 3 3
จิ้งจกไม่ต่อเนื่อง

@ จิ้งจกที่ไม่ต่อเนื่อง: พวกเขาจะลดการบรรยายเหล่านี้ที่ไหน?

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

1
@Discretelizard ตกลง ฉันไม่คิดว่าคำถามที่บอกเป็นนัยว่าฉันกำลังมองหาอัลกอริธึมเวลา P โดยเฉพาะอย่างยิ่งความเป็นไปได้ที่ว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นยาก แต่ฉันสามารถทำให้จุดนั้นชัดเจนยิ่งขึ้นในคำถามเดิม ฉันจะยกเลิกการทำเครื่องหมายคำตอบนี้ว่าถูกต้องและเพิ่มค่าหัว 100 คะแนน (ปรากฎว่าอันที่สองต้องเท่ากับ 100 ถ้าใช้คำถามเดียวกัน แต่ฉันยินดีที่จะเสนอเพราะพวกเขาเป็นเพียงแค่จุดอินเทอร์เน็ตในจินตนาการใช่ไหม? :)) อีกครั้งสำหรับทุกคนที่สามารถแสดงปัญหานี้ได้คือ NP-hard หรือค้นหาอัลกอริทึมเวลาพหุนามที่แก้ปัญหาได้
Riley

0

มันเป็นปัญหาที่ฉันกังวลมากถ้าเจ้านายของฉันขอให้ฉันใช้อัลกอริทึมที่รับประกันว่าจะหาทางออกที่ดีที่สุดในเวลาที่เหมาะสม

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

ฉันจะทำซ้ำสองสามครั้งเลือกคน "สุ่ม" ในกรณีที่หาทางออกที่ดีกว่า

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


ดังนั้นจึงกล่าวได้ว่าคุณกำลังเลือกซื้อทริปช็อปปิ้งตามจำนวนของขวัญที่จะซื้อ คุณสามารถพิสูจน์ได้ว่าขั้นตอนนี้จำเป็นต้องส่งผลให้จำนวนทริปช็อปปิ้งน้อยที่สุดเท่าที่จะเป็นไปได้? ถ้าเป็นเช่นนั้นคุณทำงานผ่านตัวอย่าง 6 คนไม่ถูกต้อง 6 คนต้องการช้อปปิ้ง 4 รายการ: . { { 1 , 2 , 3 } , { 1 , 4 , 5 } , { 2 , 4 , 6 } , { 3 , 5 , 6 } }
Riley

ไม่มีข้อพิสูจน์อย่างแน่นอน อัลกอริทึมโลภ + การเลือกแบบสุ่มที่แตกต่างกันจะช่วยเพิ่มโอกาสของคุณเล็กน้อย แต่จะไม่เดินทาง 4 ครั้ง
gnasher729

ฉันได้ทดสอบการอ้างสิทธิ์ว่าปัญหานั้นโลภและล้มเหลว แม้ว่าคุณจะทดสอบการช็อปปิ้งที่เป็นไปได้ทุกครั้งแทนที่จะเพิ่มผู้คนทีละคนคุณยังได้รับการเดินทาง 5 ครั้ง:\} วิธีโลภอยากให้การเดินทางช้อปปิ้งครั้งที่สองเพื่อซื้อ 9 ของขวัญ แต่ในการแก้ปัญหาที่ดีที่สุดการเดินทางช้อปปิ้งที่สองซื้อ 8 ของขวัญ (สมมติว่ามันจะไปในลำดับที่ระบุไว้ข้างต้น) { { 1 , 2 , 3 } , { 4 , 5 , 6 } , { 1 , 4 } , { 2 , 5 } , { 3 , 6 } }
Riley

อันที่จริงแล้ววิธีโลภไม่ได้แก้ไขกรณีของ 5 คนใน 4 แหล่งช้อปปิ้งเช่น:\} { { 1 , 2 } , { 3 , 4 } , { 5 } , { 1 , 3 } , { 2 , 4 } }
Riley

-1

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

คุณไม่ต้องการให้ผู้ปกครองและเด็กอยู่ในกลุ่มเดียวกัน คุณเริ่มต้นด้วยคนที่สุ่มและสั่งทุกคนดังนั้นฯลฯ คุณใส่ลงในกลุ่มหนึ่งและทั้งหมดในกลุ่มอื่น สำหรับคนสุดท้ายเพื่อให้คุณไม่ต้องการให้สมาชิกผู้นี้จะอยู่ในกลุ่มเดียวกันกับP_1ถ้าเป็นเลขคู่จะไม่ใช่ปัญหา คุณต้องมีกลุ่มเพิ่มเติมหนึ่งกลุ่มซึ่งอาจเป็นเพียงด้วยตัวเองในกรณีที่ง่ายที่สุดp 1 c h ฉันl d ( p 1 ) = p 2poddpevenpn=parent(p1)p1npn

อัลกอริทึมนี้จะถือว่าทุกคนเชื่อมต่อกัน แต่ไม่จำเป็นต้องเป็นอย่างนั้น หากมีหลายรอบตัดการเชื่อมต่อในคำอื่น ๆ ถ้าในบางจุดโดยที่จากนั้นคุณจะเสร็จสิ้นวงกลมนั้นและเริ่มต้นด้วยใหม่ตามขั้นตอนวิธีเดียวกัน ตราบใดที่คุณไม่รวมอัตราต่อรองและวงจรเดียวกันคุณสามารถรวมรอบตัดการเชื่อมต่อpk=parent(p1)k!=n

อัลกอริทึมนี้จบลงด้วยมากที่สุด 2 รอบ (สำหรับคู่ ) และ 3 รอบ (สำหรับคี่ )nn


ดูเหมือนว่าวิธีการนี้จะแก้ปัญหาเฉพาะกรณีที่ทุกคนให้ของขวัญหนึ่งและได้รับของขวัญหนึ่งคือที่กราฟเป็นการเปลี่ยนแปลง ฉันไม่แน่ใจว่าคำถามหมายถึงถามเฉพาะกรณีพิเศษนั้น - มาดูกันว่า OP พูดถึงสิ่งนั้นอย่างไร
DW

ที่จริงการแก้ปัญหาของฉันคือการย่อยกรณีที่มีปัญหาที่ 1 i,fan_in(vi)=fan_out(vi)=1
ilke444

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