เกม Pebble ขนานบนสาย


13

ในเกม pebbleที่บรรทัดมี N + 1 โหนดที่มีป้ายกำกับ 0 ถึง N เกมเริ่มต้นด้วย pebble บนโหนด 0 หากมี pebble บนโหนด i คุณสามารถเพิ่มหรือลบ pebble จาก node i + 1 เป้าหมายคือการวางก้อนกรวดบนโหนด N โดยไม่ต้องวางก้อนกรวดจำนวนมากบนบอร์ดในเวลาเดียวกันและโดยไม่ต้องทำตามขั้นตอนมากเกินไป

วิธีการแก้ปัญหาที่ไร้เดียงสาคือการวางก้อนกรวดบน 1 จากนั้น 2 จากนั้น 3 และอื่น ๆ สิ่งนี้เหมาะสมที่สุดในแง่ของจำนวนขั้นตอน มันไม่ดีที่สุดในจำนวนก้อนกรวดสูงสุดบนกระดานในเวลาเดียวกัน: ในระหว่างขั้นตอนสุดท้ายจะมีก้อนกรวด N ก้อนบนกระดาน (ไม่นับตัวต่อ 0)

กลยุทธ์ที่วางก้อนกรวดน้อยลงบนกระดานพร้อมกันนั้นอยู่ในบทความนี้ พวกเขามาถึงโหนด N โดยไม่เกินΘ(lg⁡N)ก้อนกรวดในเวลา แต่ค่าใช้จ่ายของการเพิ่มจำนวนของขั้นตอนที่จะΘ(nlg2⁡3) ) พวกเขาสลับว่ามีก้อนกรวดที่ตำแหน่งNโดยไม่ปล่อยก้อนกรวดอื่น ๆ โดยการสลับสลับซ้ำN/2โดยใช้เป็นจุดเริ่มต้นในการสลับNกับขั้นตอนแบบเรียกซ้ำอีกครั้งจากนั้นสลับN/2ด้วยขั้นตอนซ้ำขนาดครึ่ง ล้างมัน

ฉันสนใจในการแลกเปลี่ยนระหว่างจำนวนก้อนกรวดสูงสุดกับจำนวนขั้นบันไดภายใต้สมมติฐานที่ว่าการเพิ่มและเอาก้อนกรวดสามารถทำได้ในแบบคู่ขนาน โดย "ขนาน" ฉันหมายความว่าแต่ละขั้นตอนสามารถเพิ่มหรือลบก้อนกรวดได้มากเท่าที่ต้องการตราบใดที่อนุญาตให้มีการเพิ่ม / ลบแต่ละบุคคลและไม่โต้ตอบกับการเคลื่อนไหวอื่น ๆ ที่ทำ โดยเฉพาะถ้าAเป็นชุดของโหนดที่เราต้องการเพิ่มหรือลบก้อนกรวดออกจากและPคือชุดของโหนดที่มีก้อนกรวดในตอนเริ่มต้นของขั้นตอนนั้นเราสามารถทำการเพิ่มและลบเหล่านั้นทั้งหมดในขั้นตอนเดียวเช่น ตราบใดที่{a−1|a∈A}⊆P−A

ตัวอย่างเช่นพิจารณากลยุทธ์ที่วางก้อนกรวดที่ในขั้นตอนiแต่ทำเครื่องหมายก้อนกรวดที่เป็นทวีคูณของ√iiเป็น "จุดตรวจสอบ" และลบเพบเบิลดัชนีสูงสุดหลังจุดตรวจเพบเบิลเมื่อทำได้ กลยุทธ์นี้ยังคงมาถึงโหนด N หลังจากขั้นตอนNเช่นกลยุทธ์ไร้เดียงสา แต่ลดจำนวนก้อนกรวดสูงสุดจากNเป็น2 √NNN .2N

มีกลยุทธ์แบบ pbbble-line-pebbling ที่เสร็จสิ้นในขั้นตอนโดยมีความซับซ้อนสูงสุดที่ลดลงได้หรือไม่ ถ้าเรายินดีที่จะอนุญาตให้มีขั้นตอนO ( N lg N ) อะไรคือจุดที่ "น่าสนใจ" ซึ่งการแลกเปลี่ยนระหว่าง max-pebble และเวลานั้นดีเป็นพิเศษ?NO(Nlg⁡N)


ในแต่ละขั้นตอนคุณสามารถเพิ่มหรือลบก้อนกรวดได้กี่ก้อน ถ้าเพียงหนึ่งในย่อหน้าที่สี่ของคุณคุณหมายถึงขั้นตอนทั้งหมดแทนที่จะเป็นNหรือไม่? เมื่อนับการใช้ก้อนกรวดมันเป็นจำนวนสูงสุดของกระดานในเวลาใด ๆ ในระหว่างการเรียงลำดับหรือไม่? O(N)N
— Neal Young

@NealYoung ในกรณีที่ขนานคุณสามารถเพิ่มและลบก้อนกรวดได้มากเท่าที่คุณต้องการ แต่ถ้าคุณส่งผลกระทบต่อตำแหน่งจะต้องมีกรวดที่ตำแหน่งk - 1ที่จุดเริ่มต้นของขั้นตอน ฉันหมายความว่าไม่มีขั้นตอน แต่O ( N )นอกจากนี้ยังเป็นที่น่าสนใจและรวมอยู่ในหลักสูตรO ( N LG N ) ใช่มันเป็นจำนวนก้อนกรวดสูงสุดที่สำคัญ kk−1O(N)O(Nlg⁡N)
— Craig Gidney

สิ่งที่เกี่ยวกับกลยุทธ์ดั้งเดิม แต่ใช้ "การขนาน" เมื่อเราไปถึงเริ่มล้างครึ่งแรกในแบบคู่ขนาน เมื่อถึง3 N / 4เริ่มเคลียร์ช่วง[ N / 2 - 3 N / 4 ]และทำการเคลียร์ครึ่งแรกแบบขนานต่อไป (ในขณะที่เราวางก้อนกรวดที่3 N / 4มีก้อนกรวดN / 4เหลืออยู่เท่านั้น ครึ่งแรก); และสำหรับ( 2 k - 1 ) N / 2N/23N/4[N/2−3N/4]3N/4N/4ถึงN ความซับซ้อนของก้อนกรวดควรเหมือนกัน: Θ ( lg N )แต่ด้วยขั้นตอน N (2k−1)N/2kNΘ(lg⁡N)N
— Marzio De Biasi

@MarzioDeBiasi ทำไมความซับซ้อนของเพบเบิลจึงเหมือนกัน? เท่าที่ฉันสามารถบอกได้ความสัมพันธ์ที่เกิดซ้ำจะไปจากถึงF ( n ) = 2 F ( n / 2 ) + 1 = O ( n ) F(n)=F(n/2)+1=O(lg(n))F(n)=2F(n/2)+1=O(n)
— Craig Gidney

@CraigGidney: คุณพูดถูก ...
— Marzio De Biasi

คำตอบ:


4

การแก้ไข : เพิ่มเลมมาส 2 และ 3

นี่คือคำตอบบางส่วน: คุณสามารถเข้าถึงตำแหน่งN

  • ในเคลื่อนที่โดยใช้ช่องว่างN O ( ϵ ( N ) )โดยที่ϵ ( N ) = 1 / √NNO(ϵ(N)) N (บทแทรก 1)ϵ(N)=1/log⁡N
  • ในย้ายใช้พื้นที่O ( log N ) (สำหรับค่าคงที่ใด ๆδ > 0 ) (บทแทรก 2)N1+δO(log⁡N)δ>0

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

บทแทรก 1. สำหรับทุกก็เป็นไปได้ที่จะไปถึงตำแหน่งที่nในnย้ายใช้พื้นที่ประสบการณ์( O ( √nnn

exp⁡(O(log⁡n)) = nO(1/log⁡n)

พิสูจน์ รูปแบบซ้ำแล้วซ้ำอีกดังแสดงในรูปด้านล่าง เราใช้สัญกรณ์ต่อไปนี้:

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

                  โครงสร้างโซลูชันสำหรับบทแทรก 1

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

เส้นทึบแนวตั้งพาร์ทิชันชั้นของP ( k ) ในภาพL ( k )คือห้าดังนั้นP ( k )ประกอบด้วย 5 ชั้น แต่ละชั้นL ( k )ของP ( k ) (ยกเว้นด้านขวาสุด) มีสองปัญหาย่อยหนึ่งรายการที่ด้านบนสุดของชั้นและอีกหนึ่งที่ด้านล่างเชื่อมต่อกันด้วยเส้นแนวตั้งที่เป็นของแข็ง (แทนกรวดที่มีอยู่สำหรับ ช่วงเวลานั้น) ในภาพมีห้าชั้นดังนั้นจึงมีเก้าปัญหาย่อย โดยทั่วไปP (L(k)P(k)L(k)P(k)L(k)P(k)ประกอบด้วย 2P(k)ปัญหาย่อย subproblem ของแต่ละ P ( k )มีทางออก P ( k - 1 )2L(k)−1P(k)P(k−1)

การสังเกตที่สำคัญสำหรับการ จำกัด พื้นที่คือ ณ เวลาใด ๆ เพียงสองชั้นเท่านั้นที่มีปัญหาย่อย "ใช้งานอยู่" ส่วนที่เหลือมีเพียงก้อนเดียวเท่านั้นที่เรามี

  • และS(k)≤L(k)+2S(k−1)
  • N(k)=L(k)⋅N(k−1)

ตอนนี้เราเลือกเพื่อตรวจสอบอย่างเต็มที่P ( k ) ฉันไม่แน่ใจว่าทางเลือกนี้จะดีที่สุด แต่ดูเหมือนว่าใกล้: Take L ( k ) = 2 k จากนั้นการเกิดซ้ำดังกล่าวข้างต้นให้L(k)P(k)L(k)=2k

  • และS(k)≤k⋅2k
  • N(k)=2k(k+1)/2

ดังนั้นการแก้สำหรับเรามีk ≈ √n=N(k) และS(k)≈ √k≈2log⁡n) S(k)≈2log⁡n22log⁡n=exp⁡(O(log⁡n))

นี้จะดูแลทุกตำแหน่งในชุด{ N ( k ) : k ∈ { 1 , 2 , ... } } สำหรับพลn , ตัดด้านล่างของวิธีการแก้P ( k )สำหรับที่เล็กที่สุดkกับN ( k ) ≥ n ขอบเขตที่ต้องการเก็บไว้เนื่องจากS ( k ) / S ( k - 1 ) = O (n{N(k):k∈{1,2,…}}nP(k)kN(k)≥n ) QEDS(k)/S(k−1)=O(1)


บทแทรก 2. สำหรับท่านใดสำหรับทุกnก็เป็นไปได้ที่จะไปถึงตำแหน่งที่nในn 1 + δย้ายใช้พื้นที่O ( δ 2 1 / δ log n )δ>0nnn1+δO(δ21/δlog⁡n).

พิสูจน์ ดัดแปลงสิ่งก่อสร้างจากหลักฐานของ Lemma 1 เพื่อชะลอการเริ่มต้นแต่ละ subproblem จนกว่า subproblem ก่อนหน้านี้จะเสร็จสิ้นดังที่แสดงด้านล่าง:

                  โครงสร้างโซลูชันสำหรับบทแทรก 2

ให้แทนเวลาสำหรับการแก้ไขP ( k )เพื่อให้เสร็จ ตอนนี้ในแต่ละขั้นตอนมีเพียงหนึ่งเลเยอร์เท่านั้นที่มีปัญหาย่อยที่ให้การสนับสนุนมากกว่าหนึ่งเพบเบิลT(k)P(k)

  • ,S(k)≤L(k)+S(k−1)
  • ,N(k)=L(k)⋅N(k−1)
  • )T(k)=(2L(k)−1)⋅T(k−1)≤2L(k)⋅T(k−1)≤2kN(k)

เลือกเราได้L(k)=21/δ

  • ,S(k)≤k21/δ
  • ,N(k)=2k/δ
  • )T(k)≤2kN(k)

การแก้หาและT = T ( k )ในรูปของn = N ( k )เรามีk = δ log nและS=S(k)T=T(k)n=N(k)k=δlog⁡n

  • และS≤δ21/δlog⁡n
  • δ T≤n1+δ

นี้จะดูแลทุกตำแหน่งในชุด{ N ( k ) : k ∈ { 1 , 2 , ... } } สำหรับพลn , ตัดด้านล่างของวิธีการแก้P ( k )สำหรับที่เล็กที่สุดkกับN ( k ) ≥ n ขอบเขตที่ต้องการเก็บไว้เนื่องจากS ( k ) / S ( k - 1 ) = O (n{N(k):k∈{1,2,…}}nP(k)kN(k)≥n ) QEDS(k)/S(k−1)=O(1)


nP(n)nk≤n/2kP(N−k)k+1,k+2,…,nP(k)1,2,…,kkV(n)nδ=1>0

V(n)≥mink<nV(n−k)+max(n/2,(1+δ)V(k)).

n

ϵ(n)=1/log⁡n

δ>0V(n)≥n1+Ω(ϵ(n))

ntn1+Ω(ϵ(n))/t

  • เลมม่า 1 แน่นถึงปัจจัยคงที่ในเลขชี้กำลัง (สำหรับการแก้ปัญหาอย่างดี)
  • nnpolylognpolylognnΩ(ϵ(n))=exp⁡(Ω(log⁡n))⊈polylogn

2V(n)≥f(n)f(n)=n1+cϵ(n)c.nc>02V(n)≥f(n)nV(n)≥n

nf(n)≤mink<nf(n−k)+max(n,2f(k))f(n)−f(n−k)≤max(n,(1+δ)f(k))k<n.

ff(n)−f(n−k)≤kf′(n)kf′(n)≤max(n,(1+δ)f(k)).

f(n)/n=eclog⁡nf′(n)=(f(n)/n)(1+c/(2log⁡n)),x=log⁡ky=log⁡nyx≤yecy(1+c/(2y))≤max(ey2−x2,(1+δ)ecx)1+z≤ezez≤1+2zz≤1ecy+c/(2y)≤max(ey2−x2,e2δ+cx),

cy+c/(2y)≤max(y2−x2,2δ+cx).

y≤x+0.1δ/ccy+c/(2y)≤cx+0.2δyy≥x+0.1δ/cy2−x2≥0.1yδ/cy

cy+c/(2y)≤0.1yδ/c.
cy.

FWIW ฉันมีหลักฐานว่ามีวิธีแก้ปัญหาที่เหมาะสมที่สุดอยู่เสมอดังนั้นขอบเขตล่างในเล็มม่า 3 จะใช้กับโซลูชันทั้งหมด มันเกี่ยวข้องกับการพิมพ์ที่นี่มากเกินไป - ถ้าใครสนใจติดต่อฉันทางอีเมล (google "วิทยาศาสตร์คอมพิวเตอร์เด็กเล็ก" สำหรับข้อมูลติดต่อ)
— Neal Young
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.