ผลรวมชุดที่น้อยที่สุด


17

ลองพิจารณาปัญหานี้: รับรายการชุด จำกัด หาคำสั่งs1,s2,s3,...ที่ย่อให้น้อยที่สุด|s1|+|s1s2|+|s1s2s3|+... .

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


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

ฉันพิสูจน์แล้วว่าอัลกอริทึมโลภใช้งานไม่ได้กับ n 3 ตัวอย่างแบบ: A = {0, 1} B = C = {2,3,4} ทางออกที่ดีที่สุดคือ B, C, A ที่มีค่าใช้จ่าย 11 อัลกอริทึมโลภให้ A, B, C ที่มีราคา 12 จนถึงตอนนี้สิ่งที่ดีที่สุดที่ฉันเคยมีมาคืออัลกอริทึมการประมาณด้วยอัตราส่วนn + 2ซึ่งค่อนข้างแย่ n+23
พลวง

มีโปรแกรมไดนามิก - time โดยที่nคือจำนวนชุด O(2nโรงเรียนสารพัดช่าง(n))n

1
บางทีนี่อาจจะเหมาะกับการเก็บของ
Yuval Filmus

5
ทุกคนสามารถแก้ไขกรณีพิเศษเมื่อทั้งหมดหรือไม่ |sผม|=2
domotorp

คำตอบ:


6

ปัญหานี้เกี่ยวข้องกับปัญหาการกำหนดเวลาจริง ๆ แล้วรู้ว่าเป็น "การตั้งเวลา จำกัด แบบลำดับความสำคัญก่อนหน้า ปัญหามีดังนี้: กำหนดชุดของงานที่แต่ละงานมีเวลาประมวลผล (p) และน้ำหนัก (w) และกราฟลำดับความสำคัญถูกกำหนดไว้ในงาน เป้าหมายคือการกำหนดตารางเวลางานในเครื่องเดียว (ไม่ใช่การยึดเอาเสียก่อน) เพื่อให้ข้อ จำกัด ที่มีมาก่อนนั้นเป็นแบบ Statisfied และผลรวมของเวลาที่เสร็จสิ้นการถ่วงน้ำหนักจะลดลง ปัญหาคือ NP-hard และทราบการประมาณ 2 ครั้ง

การลดจากปัญหาผลรวมสะสมขั้นต่ำไปสู่ปัญหาการจัดตารางเวลาข้อ จำกัด ที่มาก่อน: สำหรับแต่ละองค์ประกอบสร้างงานที่มี p = 1, w = 0 สำหรับแต่ละชุดจะสร้างงานด้วย p = 0, w = 1 สร้างกราฟที่มีความสำคัญเช่น ถ้าองค์ประกอบแล้วอีจะต้องมีการกำหนดไว้ก่อนS ฉันคิดว่ากรณีพิเศษของปัญหาการตั้งเวลาเป็นปัญหายากเช่นกันeSeS

ดูลิงค์ต่อไปนี้

1) http://www.win.tue.nl/~gwoegi/papers/precsum.pdf

2) http://web.engr.illinois.edu/~chekuri/papers/dam_sched.ps


ฉันจะแนะนำกระดาษต่อไปนี้เพื่อปรับปรุงขอบเขตกรณีพิเศษและผลลัพธ์ความแข็งสำหรับปัญหาการตั้งเวลา people.idsia.ch/~monaldo/papers/MOR-schedprec-11.pdf ดูเพิ่มเติมกระดาษใน 2- \ epsilon แข็งภายใต้แตกต่างจากเกมที่ไม่ซ้ำกันโดย Bansal และคตwin.tue.nl/~nikhil/pubs/focs-09-version.pdf
จันทรา Chekuri

การลดจะไม่ต้องไปในทิศทางอื่นเพื่อพิสูจน์ว่าปัญหาผลรวมสะสมคือ NP Hard หรือไม่
พลวง

ไม่เป็นไรฉันคิดว่าฉันเห็นว่าการลดลงไปได้อย่างไร
พลวง

1

Shalmoli Gupta ได้อธิบายแล้วว่าปัญหาทั่วไปคือ NP-Hard ดังนั้นฉันตัดสินใจที่จะตรวจสอบว่ามีกรณีพิเศษใด ๆ ที่สามารถแก้ไขได้พหุนาม ในที่สุดฉันก็พบวิธีแก้ปัญหากรณีพิเศษของชุดที่แสดงถึงต้นไม้หรือโดยทั่วไปแล้วลำดับที่ขนานกันโดยการรวมชุดย่อยกับเซตที่หาที่เปรียบมิได้ทั้งหมด

คุณสมบัติหนึ่งที่ทำให้สิ่งต่าง ๆ ง่ายขึ้นคือถ้ารายการชุดถูกปิดภายใต้จุดตัด ถ้าแล้วจะมีการสั่งซื้อที่เหมาะสมที่สุดในการที่ s 1มาก่อน s 2 เราสามารถสันนิษฐานได้ว่า WLOG การสั่งซื้อที่ดีที่สุดคือการขยายเชิงเส้นของคำสั่งบางส่วนที่ได้รับจากการรวมส่วนย่อยs1s2s1s2

เนื่องจากชุดย่อยทั้งหมดของชุดปรากฏก่อนหน้าตามลำดับซึ่งหมายความว่าจำนวนที่เพิ่มไปยังผลรวมการทำงานโดยชุดที่กำหนดได้รับการแก้ไขโดยไม่คำนึงถึงว่าจะปรากฏที่ใด ถ้าคือรายการของชุดแล้วค่าใช้จ่ายที่เพิ่มขึ้นของชุดเป็นจำนวนขององค์ประกอบในของที่ไม่ได้อยู่ในส่วนย่อย ๆ ของ s ที่ปรากฏในS หากชุดเดียวกันปรากฏหลายครั้งในSเราสามารถเลือกหนึ่งชุดก่อนและปล่อยให้ชุดอื่นมีค่าใช้จ่าย 0SSS

ซึ่งหมายความว่าปัญหานี้เทียบเท่ากับปัญหาเวลาเสร็จสิ้นขั้นต่ำถ่วงน้ำหนักในการตั้งเวลาเครื่องเดี่ยวที่มีข้อ จำกัด ที่สำคัญกว่า ในปัญหานี้เนื่องจากชุดของงานที่มีน้ำหนักและคูณt jและคำสั่งบางส่วนของงานPเราต้องการค้นหาการเรียงลำดับของงานที่ลดเวลาเสร็จสิ้นทั้งหมดที่ถ่วงน้ำหนักเช่นWJเสื้อJP

Σผม=1nWJผม(Σk=1ผมเสื้อJk)

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

ตามที่ปรากฎปัญหานี้คือ NP-Hard สำหรับทั่วไปเช่นกัน อย่างไรก็ตามPแบบพิเศษบางอย่างสามารถแก้ไขได้ในเวลาพหุนามPP

กระดาษนี้ให้อัลกอริทึม ( n l o g n )สำหรับกรณีของชุดคำสั่งแบบขนาน P (ซึ่งรวมถึงกรณีที่สำคัญของต้นไม้เช่นกัน) น่าเสียดายที่ฉันไม่สามารถเข้าถึงกระดาษแผ่นนั้นได้ดังนั้นฉันจึงตัดสินใจลองนำมันกลับมาใช้ใหม่ นี่คือสิ่งที่ฉันมาด้วยO(nล.โอก.n)P

เพื่อแก้ไขปัญหานี้จำเป็นต้องมีการสังเกตหลายประการ

ก่อนอื่นหากไม่มีข้อ จำกัด ใด ๆ มาก่อนทางออกที่ดีที่สุดคือการเรียงลำดับงานเพื่อเพิ่ม . สำหรับความเรียบง่ายผมจะหมายถึงนี้เป็นมูลค่าของงานที่ยากโวลต์(J) โปรดทราบว่าเนื่องจากการเรียงลำดับคือเสื้อJWJโวลต์(J)จึงเป็นไปไม่ได้ที่จะทำได้ดีกว่าความซับซ้อนนี้O(nล.โอก.n)

กฎข้อที่ 1ให้และเป็นงานดังกล่าวว่า< Pและขครอบคลุม ถ้าv ( a ) < v (aa<Pดังนั้นเราสามารถปล่อยข้อ จำกัด a < bโดยไม่กระทบต่อการสั่งซื้อหรือมูลค่าวัตถุประสงค์ที่เหมาะสมโวลต์(a)<โวลต์()a<

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

ในทำนองเดียวกันเราสามารถวางข้อ จำกัด ในกรณีที่ตราบใดที่เรามั่นใจว่าหลังจากเรียงลำดับตามค่าเราจะทำลายความสัมพันธ์โดยปรึกษาความสัมพันธ์ที่มีมาก่อนของปัญหาดั้งเดิม (ลดความซับซ้อน) สิ่งนี้ทำให้มั่นใจได้ว่าทางออกที่ดีที่สุดที่พบสำหรับปัญหาที่ผ่อนคลายเป็นวิธีที่ดีที่สุดสำหรับปัญหาดั้งเดิมv(a)=v(b)

ดังนั้นเมื่อใดก็ตามที่ b ครอบคลุม a และเราสามารถลดความซับซ้อนของปัญหาโดยการวางข้อ จำกัด <v(a)v(b)a<

กฎข้อ 2สมมติว่าเรารู้ว่า b ปฏิบัติตามทันทีหลังจาก a ในคำตอบที่ดีที่สุด เราสามารถรวม a และ b เข้ากับโหนด c ใหม่ด้วยและt c = t a + t bในขณะที่เกร็ง poset Pอย่างเหมาะสมW=Wa+Wเสื้อ=เสื้อa+เสื้อP

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

กฎข้อที่ 3สมมติว่าในการแก้ปัญหาที่ดีที่สุดสำหรับอินสแตนซ์ปัญหามาก่อนbและv ( a ) > v ( b )aโวลต์(a)>โวลต์() )ตอนนี้สมมติว่าเราสร้างอินสแตนซ์ปัญหาที่มีขนาดใหญ่ขึ้นโดยการเพิ่มงานใหม่ด้วยโพสต์ใหม่ที่เกิดขึ้นจากซีรีส์หรือองค์ประกอบแบบขนานกับต้นฉบับ ก็คือจะมีทางออกที่ดีที่สุดที่จะเป็นปัญหาขนาดใหญ่ที่มาทันทีก่อนที่จะขa

สมมติว่าเป็นอย่างอื่น ทางออกที่ดีที่สุดให้มี, x 1 , x 2 , ... , ตั้งแต่Pที่ถูกสร้างขึ้นโดยองค์ประกอบชุดขนานเรารู้ว่าทุกx ฉัน s หาที่เปรียบมิได้ที่จะและข ผสานทุกx ฉันโหนดเป็นโหนดใหม่x 'โดยใช้กฎ 2. ตอนนี้พิจารณาวี( x ' ) ถ้าv ( x ) v ( a )เราสามารถสลับได้a,x1,x2,...,Pxผมaxผมx'โวลต์(x')โวลต์(x')โวลต์(a)และ aโดยไม่เพิ่มค่าวัตถุประสงค์ ในทำนองเดียวกันถ้าโวลต์( x ' ) วี( )เราสามารถสลับ x 'และข ดังนั้นวี( ) < V ( x ' ) < วี( ) แต่ v ( a ) > v ( b )ความขัดแย้งx'aโวลต์(x')โวลต์()x'โวลต์(a)<โวลต์(x')<โวลต์()โวลต์(a)>โวลต์()

ด้วยการใช้กฎ 2 และกฎ 3 เราสามารถรับOง่าย ๆ แต่ไม่ดี( n 2 )O(n2)อัลกอริทึมดี เนื่องจากเป็นลำดับแบบอนุกรมให้ถือว่าอินพุตมีการแสดงทรีของPโดยที่แต่ละโหนดแสดงถึงองค์ประกอบของอนุกรมหรือองค์ประกอบแบบขนานและใบไม้เป็นงานเดี่ยว เราสามารถหาวิธีการแก้ปัญหาที่ดีที่สุดกับการสำรวจเส้นทางของต้นไม้โดยการรักษาค่าคงที่ว่าทางออกที่ดีที่สุดสำหรับแต่ละปัญหาย่อยคือห่วงโซ่ในการเพิ่มมูลค่าPP

สมมติว่าเป็นองค์ประกอบของชุดของปัญากับ posets P 1และP 2 ขอให้แก้ปัญหาที่ดีที่สุดได้รับการสั่งซื้อC 1และC 2 ทางออกที่ดีที่สุดสำหรับPคือการเชื่อมโยงของโซ่เหล่านี้อย่างชัดเจน อย่างไรก็ตามเป็นไปได้ว่างานแรกในC 2PP1P212P2มีค่าต่ำกว่างานล่าสุดใน 1 เพื่อรักษาค่าคงที่ว่าการแก้ปัญหาเป็นห่วงโซ่เรียงเราใช้กฎ 3 + กฎ 2 เพื่อรวมจุดสิ้นสุดตราบใดที่พวกเขาไม่ได้อยู่ในลำดับที่เรียง1

ถ้าแทนองค์ประกอบแบบขนานเราก็จะใช้เชนเรียงลำดับS 1PS1และแล้วรวมเข้าด้วยกันเป็นลูกโซ่ใหม่ที่เรียงกัน ขอบคุณที่ไม่เปลี่ยนแปลงนี้ถูกต้องS2

แต่น่าเสียดายที่ขั้นตอนวิธีนี้คือ ) เพื่อให้ได้O ( n lO(n2)อัลกอริทึม o g n )เราจำเป็นต้องคำนวณเชนอย่างเกียจคร้านโดยใช้กฎ 1O(nล.โอก.n)

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

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

ก่อนหน้านี้เราทำการสำรวจเส้นทางล่วงหน้า ที่ไหนPเป็นองค์ประกอบแบบอนุกรมเราจะตรวจสอบงานสูงสุดของคู่ฮีปแรกและงานต่ำสุดของคู่ฮีปที่สอง หากค่าของพวกเขาไม่เป็นระเบียบเราจะนำมันออกมาและรวมเข้าด้วยกันโดยใช้กฎที่ 2 และ 3 จากนั้นเราจะเปรียบเทียบงานที่สร้างขึ้นใหม่กับจุดสิ้นสุดใหม่ เมื่อจุดสิ้นสุดไม่มีค่าการสั่งซื้ออีกต่อไปเราสามารถลืมข้อ จำกัด ลำดับความสำคัญแบบอนุกรมได้อย่างปลอดภัยด้วยกฎข้อที่ 1 จากนั้นเราเพิ่งผลักงานที่สร้างขึ้นใหม่หากมีอยู่บนกองแล้วผสานฮีปเพื่อสร้างคู่ฮีป เพื่อตัวเองP

สำหรับการจัดองค์ประกอบแบบขนานเราก็รวมคู่ฮีปเข้าด้วยกัน heap ขั้นต่ำใหม่คือการผสานของ min heap จากแต่ละ subproblem และเช่นเดียวกันกับ max heap โปรดทราบว่ากองฟีโบนักชีจะรวมกันในเวลาคงที่

เมื่อเรามีคู่ฮีปที่เป็นตัวแทนของการแก้ปัญหาทั้งหมดเราสามารถหาวิธีการแก้ปัญหาที่เกิดขึ้นจริงโดยการสั่งปิด heap ขั้นต่ำจนกว่าจะว่าง หลังจากนั้นเราเลิกทำการแทนที่กฎ 2 ทั้งหมดเพื่อหาวิธีแก้ไขปัญหาเดิม

แต่ละงานที่แตกออกจากฮีปนั้นจะถูกรวมเข้ากับงานใหม่ทันทีลดจำนวนงานทั้งหมดหรือถูกตอกขึ้นมาหนึ่งครั้งในตอนท้าย ดังนั้นจึงมีจำนวนเชิงเส้นของ heap ปรากฏที่นำไปสู่เวลาตลอดเวลา การดำเนินการอื่น ๆ คือเวลาคงที่ต่อโหนดหรืองานและเป็นเชิงเส้นมากกว่าทั้งหมดO(nล.โอก.n)

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