การปัดเศษเพื่อลดผลรวมของข้อผิดพลาดในระยะทางแบบคู่


25

สิ่งที่ทราบเกี่ยวกับความซับซ้อนของปัญหาต่อไปนี้:

  • ได้รับ: สรุปตัวเลข<x_nx 1 < x 2 < < x nx1<x2<<xn
  • เอาท์พุท: จำนวนเต็มy_ny1y2yny1y2yn
  • วัตถุประสงค์: ย่อที่1i<jne(i,j),
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.
    e(i,j)=|(yjyi)(xjxi)|.

นั่นคือเราต้องการปัดเศษจำนวนตรรกยะเป็นจำนวนเต็มเพื่อลดผลรวมของข้อผิดพลาดเป็นระยะทางแบบคู่ สำหรับแต่ละคู่เราต้องการที่จะมีความโค้งมนของระยะใกล้ที่สุดเท่าที่เป็นไปได้ในระยะทางจริงx_j-x_ii,ji,jyjyiyjyixjxixjxi


แรงจูงใจ: การเดินทางด้วยรถไฟใต้ดินที่น่าเบื่อและโปสเตอร์ที่แสดง "สถานที่" ของสถานีที่ความละเอียดของเวลาเดินทางหนึ่งนาที ที่นี่เราจะกลบเกลื่อนข้อผิดพลาดที่ทำให้คนหากพวกเขาใช้โปสเตอร์ที่จะมองขึ้นเวลาการเดินทางระหว่างสถานีiiและjjเฉลี่ยมากกว่าทุกคู่i<ji<j<J

แผนที่เส้นทาง

(ที่มา)

ตัวอย่างเช่นที่นี่เราสามารถอ่านการประมาณระยะทางตามเข็มนาฬิการะหว่างสี่สถานีต่อไปนี้ (โดยใช้ A, B, C, D สำหรับช่วงสั้น ๆ ):

  • A – B ≈ 1 นาที, B – C ≈ 2 นาที, C – D ≈ 2 นาที
  • A – C ≈ 3 นาที B – D ≈ 4 นาที
  • A – D ≈ 5 นาที

นี่เป็นการประมาณที่ดีที่สุดหรือไม่ ถ้าคุณรู้เวลาเดินทางจริงคุณจะพบทางออกที่ดีกว่าไหม?


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

ไม่มีใครรู้จักปัญหานี้หรือไม่? หรือดูอัลกอริทึมที่ฉลาดเพื่อแก้ปัญหาเหรอ?


แก้ไข:มีคำถามที่ได้รับการกล่าวถึงในความคิดเห็น ลองตั้งชื่อให้พวกเขา

  • ชั้น / ceilรุ่น: มันเป็นสิ่งจำเป็นที่สำหรับฉันyi{xi,xi}yi{xi,xi}ii

  • จำนวนเต็มรุ่น: มันจะเพียงพอที่สำหรับฉันyiZyiZii

  • เนื่องรุ่น: มันเป็นสิ่งจำเป็นที่y_ny1y2yny1y2yn

  • ไม่ใช่ monotonicรุ่น: เราสามารถมีสำหรับ<Jyi>yjyi>yji<ji<j

คำถามต้นฉบับพิจารณาว่าเป็นเลขจำนวนเต็มเดียว แต่ยินดีให้คำตอบที่เกี่ยวข้องกับเวอร์ชันใด ๆ เหล่านี้


DP ทำงานได้กับกรณีเมื่อคุณสนใจเฉพาะการวัดที่อยู่ติดกันหรือไม่?
Suresh Venkat

1
@SureshVenkat: ที่จริงในกรณีที่ว่าจะกลายเป็นปัญหาง่ายมาก: คุณเพียงแค่เลือกที่ดีที่สุดของระยะหนึ่งสำหรับแต่ละฉันนั่นคือคุณสามารถย่อแต่ละอย่างอิสระ yiyi1yiyi1iie(i1,i)e(i1,i)
Jukka Suomela

4
รายงานนี้โดย Estie Arkin ดูเหมือนว่ามีความเกี่ยวข้อง: ams.sunysb.edu/~estie/papers/beautification.pdf มีการพิสูจน์ว่าการลดจำนวนระยะห่างระหว่างจุดที่แตกต่างกันในเอาต์พุตเป็นแบบ NP-hard นี่ไม่ใช่ผลรวมของการเปลี่ยนแปลงทั้งหมดดังเช่นในคำถามนี้ แต่บางทีโปรแกรมเบ็ดเตล็ดความแข็งในรายงานอาจแนะนำการพิสูจน์ความแข็งสำหรับปัญหานี้
Val

2
ฉันมีความรู้สึกว่าปัญหานี้ควรแก้ไขได้อย่างแน่นอนโดยใช้เทคนิคที่รู้จักกันดี ลองดูว่าเงินรางวัลนั้นเพียงพอที่จะกระตุ้นผู้คนให้แก้ปัญหานี้หรือไม่ :)
Jukka Suomela

1
@ vzn: ฉันสนใจในความซับซ้อนในการคำนวณของปัญหานี้ หากคุณสามารถพิสูจน์ได้ว่ามีวิธีการค้นหาตามเวลาพหุนามที่รับประกันว่าจะได้รับสิ่งที่เหมาะสมที่สุดในโลก
Jukka Suomela

คำตอบ:


9

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

อันดับแรกสมมติว่าแต่ละโดยที่เป็นส่วนที่สำคัญเป็นส่วนที่เป็นเศษส่วน สมมติว่าถูกปัดเศษเป็นโดยที่เป็นจำนวนเต็มแบบไม่ลบ (แน่นอนโดยทั่วไปสามารถเป็นค่าลบได้ แต่เราสามารถเลื่อนเพื่อให้เล็กที่สุดคือ 0)xi=xi+{xi}xi=xi+{xi}xixi{xi}{xi}xixixi+vixi+vivivivivivivi

ตอนนี้ให้พิจารณาค่าใช้จ่ายสำหรับคู่ ,เมื่อทำการปัดเศษนี้ ค่าใช้จ่ายควรจะเป็นxixixjxj

||vivj+xixj||{xi}{xj}+xixj||

||vivj+xixj||{xi}{xj}+xixj||

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

|vivj({xi}{xj})|

|vivj({xi}{xj})|

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

ตอนนี้เราต้องการที่จะพิสูจน์ได้ว่าถ้า , ในการแก้ปัญหาที่ดีที่สุดที่เราจะต้องมีv_j{xi}>{xj}{xi}>{xj}vivjvivj

สมมตินี้ไม่เป็นความจริงที่ว่าเรามีคู่แต่<v_j เราจะแสดงให้เห็นว่าถ้าเราสลับทางออกจะดีขึ้นอย่างเคร่งครัด{xi}>{xj}{xi}>{xj}vi<vjvi<vjvivi vjvj

ก่อนอื่นเราเปรียบเทียบคำระหว่างกับที่นี่เป็นที่ชัดเจนว่าการแลกเปลี่ยนนั้นดีกว่าอย่างแน่นอนเพราะในเวอร์ชันที่ไม่มีการสลับและมีเครื่องหมายเดียวกันแน่นอน value จะเป็นผลรวมของค่าสัมบูรณ์ทั้งสองiijjvivjvivj{xj}{xi}{xj}{xi}

ตอนนี้สำหรับการใด ๆเราเปรียบเทียบผลรวมของคู่และk) นั่นคือเราต้องเปรียบเทียบkk(i,k)(i,k)(j,k)(j,k)

|vivk({xi}{xk})|+|vjvk({xj}{xk})||vivk({xi}{xk})|+|vjvk({xj}{xk})|และ.|vjvk({xi}{xk})|+|vivk({xj}{xk})||vjvk({xi}{xk})|+|vivk({xj}{xk})|

ใช้, , ,เพื่อแสดงถึงข้อตกลงสี่ภายในค่าสัมบูรณ์ก็เป็นที่ชัดเจนว่า D ยังเป็นที่ชัดเจนว่า. เรารู้. รับผลรวมของทั้งหมดเรารู้ว่าการสลับจะดีกว่าเท่านั้นAABBCCDDA+B=C+DA+B=C+D|AB||CD||AB||CD||A|+|B||C|+|D||A|+|B||C|+|D|xkxk

โปรดสังเกตว่าตอนนี้เรามีทางออกสำหรับ Monotonic floor / ceil version: จะต้องมี threshold เมื่อใหญ่กว่าเสมอเมื่อมีขนาดเล็กลงเสมอเมื่อมันมีค่าเท่ากัน แต่คุณภาพของโซลูชันขึ้นอยู่กับจำนวนเท่านั้น เราแจกแจงโซลูชันทั้งหมดเหล่านี้และเลือกโซลูชันที่มีฟังก์ชันวัตถุประสงค์น้อยที่สุด (โซลูชั่นทั้งหมดเหล่านี้จำเป็นต้องมีโมโนโทน){xi}{xi}

ในที่สุดเราก็อยากจะไปที่ปัญหาเลขจำนวนเต็มเดียว เราสามารถพิสูจน์ได้ว่าทางออกที่ดีที่สุดเหมือนกับ Monotonic floor / ceil version

ในฐานะที่เราสันนิษฐานที่เล็กที่สุดเป็น 0 กลุ่มทั้งหมด 's ตามของพวกเขา ' s และเรียกกลุ่มพวกเขา\} ครั้งแรกที่เราจะพิสูจน์ให้เห็นว่าไม่มีกลุ่มว่างเปล่า แต่นี้เป็นเรื่องง่ายถ้ากลุ่ม -th ว่างสำหรับการใด ๆเพียงแค่ให้v_i-1 มันง่ายที่จะเห็นฟังก์ชั่นวัตถุประสงค์ปรับปรุงอยู่เสมอ (โดยทั่วไปเนื่องจาก )vivixixivivi0,1,2,...,max{vi}kvi>kvi=vi1|{xi}{xj}|<1

ตอนนี้เราจะต้องพิสูจน์ว่าค่าเฉลี่ยของในกลุ่มเป็นอย่างน้อยเฉลี่ยของในกลุ่มบวก1/2หากนี่ไม่เป็นจริงเพียงแค่ปล่อยให้สำหรับทั้งหมดการคำนวณอีกครั้งแสดงให้เห็นว่าการทำงานของวัตถุประสงค์ดีขึ้น{xi}k+1{xi}k1/2vi=vi1vi>k

เนื่องจากค่าเฉลี่ยของอยู่ในช่วงจึงมีอยู่ไม่เกินสองกลุ่มซึ่งสอดคล้องกับรุ่นพื้น / เพดาน{xi}[0,1)


1

เป็นเพียงความคิดเห็นเพิ่มเติม ... (อาจเป็นเรื่องเล็กน้อยและ / หรือผิด :)

ถ้าและคือตัวคูณร่วมน้อยของ s แล้วเราสามารถกำจัด rationals นี้:Mxi=ai/biMbixi=Mxi

ถ้า (ชั้น, เพดาน จำกัด ) จากนั้นเราสามารถใช้ตัวแปรไบนารีเพื่อแสดงโดยใช้ระยะทางจาก (หรือ ):yi{xi,xi}viyixiLi=xiMxiRi=xiMxi

yi=xi+Livi+Ri(1vi)=xi+(LiRi)vi+Ri=xi+Divi+Ri

และปัญหาดั้งเดิมควร (?!?) เทียบเท่ากับการค้นหาที่ย่อเล็กสุด:vi

1i<jn|DiviDjvj|

กับvi{0,1},DiZ


การขยายผลรวมครั้งสุดท้ายของคุณโดยใช้แนวคิดข้อผิดพลาด f fn ด้านบนมันจะแสดงให้เห็นว่าสิ่งที่ดีที่สุดเป็นเพียงทางเลือกที่แต่ละชั้นตัวแปร / เพดานใกล้กับหรือไม่? เพื่อให้เหลือเพียงกรณีของวิธีการปัดเศษสำหรับในรูปแบบโดยที่เป็นจำนวนเต็ม e(i,j)xnxnmn+12m
vzn

1
@ vzn: ฉันคิดว่านี่เป็นตัวอย่าง ถ้าเราปัดเศษโดยใช้เกณฑ์การปัดเศษเราจะได้รับที่มีข้อผิดพลาดแต่มีข้อผิดพลาดที่ (ผลลัพธ์จะเหมือนกันถ้า เรากำจัดค่าหารด้วย LCM) (0,1.4,8.7)xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi

ตกลง แต่ความคิดใหม่ พิจารณาอีกครั้ง ขยายผลรวม ก็จะลดไปหลายคำด้วยและ 2 แต่หลังเท่ากับ ! จึงช่วยลดปัญหาในรูปแบบของการลดการที่เป็น 0/1 เวกเตอร์แถวและเป็นเวกเตอร์คอลัมน์คงที่ จริงหรือไม่? แล้วนั่นเป็นเรื่องไม่สำคัญและเลือกที่เป็น 1 ถ้าองค์ประกอบที่เกี่ยวข้องในเป็นลบและ 0 ถ้ามันเป็นบวก .... QED? e(i,j)viv2iviXDXDXD
vzn

1
@vzn: หากคุณใช้ข้อผิดพลาดเพื่อกำจัดฟังก์ชันค่าสัมบูรณ์คุณจะได้รับเงื่อนไขเช่น ; คุณจัดการกับมันในการย่อขนาดได้อย่างไร ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

โอ๊ะ! คุณตอบก่อนที่ฉันจะมีโอกาสที่จะลบความคิดเห็นนั้นหลังจากตระหนักว่า .. แล้วมันก็ยังดูเหมือนว่าจะลดปัญหาการเพิ่มประสิทธิภาพเมทริกซ์เชิงเส้นเกือบ? ยังมีคำว่าโดยที่คือเวกเตอร์คอลัมน์ ... VVTV
vzn

1

ความคิดเห็นเพิ่มเติมแบบขยาย ... อาจผิด

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

ให้เป็นส่วนที่เป็นเศษส่วนของเราพิจารณาสิ่งต่าง ๆ จากที่เล็กที่สุดไปยังที่ใหญ่ที่สุด สมมติว่าที่ใหญ่ที่สุดเป็นและเพราะเรากำลังทำแบบไดนามิกการเขียนโปรแกรมที่เรารู้อยู่แล้วว่า "อะไร" (ฉันจะอธิบายสิ่งที่บางสิ่งบางอย่างนี้อยู่) เกี่ยวกับวิธีการแก้ปัญหาที่ดีที่สุดสำหรับทุกอย่างอื่นยกเว้นx_k{xi}xi{xi}{xk}xk

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

  1. มีกี่สิ่งที่ถูกปัดเศษขึ้น
  2. มีกี่สิ่งที่ถูกปัดเศษลง
  3. ผลรวมของในบรรดาที่ปัดเศษลง{xi}xi

ตกลง 1 และ 2 นั้นเหมือนกันเราสามารถปล่อยให้ f [N, Ndown, Sdown] เป็นทางออกที่ดีที่สุดสำหรับจุดแรก N (เมื่อเรียงลำดับตามลำดับจากน้อยไปมาก ) จำนวนปัดเศษของคือ Ndown และผลรวมของสำหรับการปัดเศษลงคือ Sdown ไม่ยากที่จะเขียนว่าจะไปจาก f [N-1] ถึง f [N] อย่างไร{xi}xi{xi}

ปัญหาคือแน่นอน Sdown สามารถมีค่าได้หลายอย่าง แต่มันจะทำงานเมื่อตัวหารสามัญมีขนาดเล็กหรือเราสามารถปัดทุกอย่างเป็นจุดกริดก่อนและรับ FPTAS (ถ้าโปรแกรมไดนามิกด้านบนถูกต้อง ... )


เพิ่งสังเกตเห็นความคิดเห็นของ @Marzio De Biasi การคิดเกี่ยวกับการเขียนโปรแกรมแบบไดนามิกนี้ง่ายกว่ามากโดยใช้ฟังก์ชันวัตถุประสงค์นั้น เนื่องจากเราจัดเรียงข้อมูลตามเมื่อเราพยายามพิจารณาขั้นสุดท้ายค่าสัมบูรณ์ทั้งหมดจะหายไป ค่าใช้จ่ายเพิ่มเติมเป็นทั้งหรือD_iv_i DiDivi(N1)DkDivi
Rong Ge

ตกลงไม่จำเป็นต้องเป็นบวก แต่นั่นก็สามารถจัดการได้ เราต้องบอกความแตกต่างระหว่างและD_iv_i Ndown คือจำนวนก่อนหน้าDi|Divi|Ndown|Dk|+NupDkDivivjซึ่งเท่ากับ 0, Nup คือจำนวนของก่อนหน้านี้เท่ากับ 1vj
Rong Ge

สิ่งนี้ดูมีแนวโน้ม แต่ฉันคิดว่ามีความยากลำบากเพิ่มเติมหากค่าอินพุตใกล้เกินไปเกินไป พิจารณาเช่นxi=1.1และ1.9 ตอนนี้ถ้าเราสามารถทำให้ปัดขึ้นและปัดลงได้เราจะไม่มีคุณสมบัติที่ดีที่ความผิดพลาดจะเปลี่ยนไปอย่างแม่นยำ 1 ขึ้นอยู่กับว่านั้นถูกปัดขึ้นหรือลง ในทางกลับกันถ้าเราห้ามการปัดเศษที่เปลี่ยนลำดับของคะแนน (อย่างที่ฉันมีในคำถามต้นฉบับ) ดูเหมือนว่าเราจำเป็นต้องติดตามการปัดเศษที่ยังมีอยู่ในโปรแกรมไดนามิก เราทำสิ่งนั้นได้ไหม xk=1.9xixkxk
Jukka Suomela

1
@Jukka Suomela หลังจากที่ฉันเห็นความคิดเห็นของคุณฉันรู้ว่าเราไม่ควรปล่อยให้สิ่งที่มีขนาดใหญ่กว่าถูกปัดเศษลงในขณะที่บางสิ่งที่มีขนาดเล็กกว่าจะถูกปัดเศษขึ้น สิ่งนี้สามารถพิสูจน์ได้ถ้าคุณตรวจสอบทุกกรณี จากนั้นคำตอบสำหรับปัญหา (ที่มีข้อ จำกัด รอบ) นั้นชัดเจน: จะต้องมีขีด จำกัด ด้านบนขีด จำกัด ที่คุณควรปัดขึ้นด้านล่างคุณควรปัดเศษลงที่ขีดแบ่งบางทีบางส่วนควรปัดขึ้นและลง แต่คุณภาพเท่านั้น ขึ้นอยู่กับจำนวน โซลูชั่นเหล่านี้สามารถระบุได้อย่างง่ายดาย {xi}{xi}
Rong Ge

1
จากการตรวจสอบทุกกรณีที่ฉันหมายถึงสมมติว่าให้คิดถึงอีกในหนึ่งในสามภูมิภาคที่แยกโดยและและถูกปัดขึ้นหรือลง ในทั้ง 6 กรณีการปัดเศษลงและขึ้นไม่เคยแย่ไปกว่าการปัดเศษ{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjลงและขึ้น xi
Rong Ge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.