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


13

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

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

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

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

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

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


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

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

สิ่งที่เกี่ยวกับกลยุทธ์ดั้งเดิม แต่ใช้ "การขนาน" เมื่อเราไปถึงเริ่มล้างครึ่งแรกในแบบคู่ขนาน เมื่อถึง3 N / 4เริ่มเคลียร์ช่วง[ N / 2 - 3 N / 4 ]และทำการเคลียร์ครึ่งแรกแบบขนานต่อไป (ในขณะที่เราวางก้อนกรวดที่3 N / 4มีก้อนกรวดN / 4เหลืออยู่เท่านั้น ครึ่งแรก); และสำหรับ( 2 k - 1 ) N / 2N/23N/4[N/23N/4]3N/4N/4ถึงN ความซับซ้อนของก้อนกรวดควรเหมือนกัน: Θ ( lg N )แต่ด้วยขั้นตอน N (2k1)N/2kNΘ(lgN)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/logN
  • ในย้ายใช้พื้นที่O ( log N ) (สำหรับค่าคงที่ใด ๆδ > 0 ) (บทแทรก 2)N1+δO(logN)δ>0

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

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

exp(O(logn)) = nO(1/logn)

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

  • คือจำนวนระดับในการเรียกซ้ำ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(k1)

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

  • และS(k)L(k)+2S(k1)
  • N(k)=L(k)N(k1)

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

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

ดังนั้นการแก้สำหรับเรามีk n=N(k) และS(k)k2logn) S(k)2logn22logn=exp(O(logn))

นี้จะดูแลทุกตำแหน่งในชุด{ 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(k1)=O(1)


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

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

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

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

  • ,S(k)L(k)+S(k1)
  • ,N(k)=L(k)N(k1)
  • )T(k)=(2L(k)1)T(k1)2L(k)T(k1)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=δlogn

  • และSδ21/δlogn
  • δ Tn1+δ

นี้จะดูแลทุกตำแหน่งในชุด{ 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(k1)=O(1)


nP(n)nkn/2kP(Nk)k+1,k+2,,nP(k)1,2,,kkV(n)nδ=1>0

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

n

ϵ(n)=1/logn

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

ntn1+Ω(ϵ(n))/t

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

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

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

ff(n)f(nk)kf(n)kf(n)max(n,(1+δ)f(k)).

f(n)/n=eclognf(n)=(f(n)/n)(1+c/(2logn)),x=logky=lognyxyecy(1+c/(2y))max(ey2x2,(1+δ)ecx)1+zezez1+2zz1ecy+c/(2y)max(ey2x2,e2δ+cx),

cy+c/(2y)max(y2x2,2δ+cx).

yx+0.1δ/ccy+c/(2y)cx+0.2δyyx+0.1δ/cy2x20.1yδ/cy

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

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