ระยะทางที่สั้นที่สุดเปลี่ยนไปมากแค่ไหนเมื่อเพิ่มขอบเข้ากับกราฟ


22

ให้เป็นกราฟที่สมบูรณ์, มีน้ำหนัก, ไม่ระบุทิศทาง เราสร้างกราฟสองG ' = ( V , E ' )โดยการเพิ่มขอบหนึ่งโดยหนึ่งจากEไปE ' เราเพิ่มขอบΘ ( | V | )ลงในG ทั้งหมดG=(V,E)G=(V,E)EEΘ(|V|)G

ทุกครั้งที่เราเพิ่มอีกหนึ่งขอบเพื่อE 'เราจะพิจารณาในระยะทางที่สั้นที่สุดระหว่างคู่ทั้งหมดใน( V , E ' )และ( V , E '{ ( U , V ) } ) เรานับจำนวนของระยะทางที่สั้นที่สุดเหล่านี้มีการเปลี่ยนแปลงเป็นผลมาจากการเพิ่ม( U , V ) ให้C iเป็นระยะทางที่สั้นที่สุดที่เปลี่ยนไปเมื่อเราเพิ่มi(u,v)E(V,E)(V,E{(u,v)})(u,v)Ciiขอบที่หนึ่งและให้เป็นจำนวนของขอบที่เราเพิ่มเข้าไปทั้งหมดn

C = i C iใหญ่แค่ไหน ?C=iCin

เช่นเดียวกับ , C = O ( n 2 )เช่นกัน ขอบเขตนี้สามารถปรับปรุงได้หรือไม่? โปรดทราบว่าฉันกำหนดCจะเป็นเฉลี่ยมากกว่าขอบทั้งหมดที่ถูกเพิ่มเพื่อรอบเดียวซึ่งในจำนวนมากของการเปลี่ยนแปลงในระยะทางไม่ได้เป็นที่น่าสนใจแม้ว่ามันจะพิสูจน์ให้เห็นว่าC = Ω ( n )Ci=O(|V|2)=O(n2)C=O(n2)CC=Ω(n)

ฉันมีอัลกอริทึมสำหรับคำนวณเรขาคณิต t-spanner อย่างตะกละตะกลามซึ่งทำงานในเวลาดังนั้นถ้าCคือo ( n 2 )อัลกอริทึมของฉันเร็วกว่าอัลกอริทึมโลภดั้งเดิมและถ้าCมีขนาดเล็กจริงๆ อาจเร็วกว่าอัลกอริทึมที่รู้จักกันดีที่สุด (แม้ว่าฉันจะสงสัยก็ตาม)O(Cnlogn)Co(n2)C

คุณสมบัติเฉพาะปัญหาที่อาจช่วยให้เกิดขอบเขตที่ดี: edge ที่เพิ่มเข้ามานั้นจะมีน้ำหนักที่ใหญ่กว่าขอบใด ๆ ที่อยู่ในกราฟอยู่เสมอ นอกจากนี้น้ำหนักของมันสั้นกว่าเส้นทางที่สั้นที่สุดระหว่าง UและV(u,v)uv

คุณอาจสมมติว่าจุดยอดที่สอดคล้องกับจุดในระนาบ 2d และระยะห่างระหว่างจุดยอดคือระยะทางแบบยุคลิดระหว่างจุดเหล่านี้ นั่นคือทุกจุดยอดตรงกับบางจุด( x , y )ในระนาบและสำหรับขอบ( u , v ) = ( ( x 1 , y 1 ) , ( x 2 , y 2 ) )น้ำหนักของมันจะเท่ากัน ถึงv(x,y)(u,v)=((x1,y1),(x2,y2))(x2x1)2+(y2y1)2.


2
ใช้สอง cliques เชื่อมต่อโดยเส้นทางที่มีสองขอบ การเพิ่มหนึ่งขอบโดยตรงระหว่าง cliques ทำให้สั้นลงของเส้นทางที่สั้นที่สุด Ω(n2)
หลุยส์

1
@Louis: ใช่มีตัวอย่างที่ขอบเดียวทำให้ระยะทางมากที่จะเปลี่ยนแปลง แต่มีกราฟที่เกิดขึ้นสำหรับทุกขอบที่คุณเพิ่มหรืออย่างน้อยสำหรับพวกเขามาก? นี่คือเหตุผลที่ฉันกำหนดให้เป็นค่าเฉลี่ยของทุกขอบ :)C
Alex ten Brink

1
ที่สุดของขอบในกราฟนี้ที่สามารถเพิ่มเป็นชนิดที่ผมอธิบายไว้ ...
หลุยส์

@Louis True ชมรมประกอบด้วยขอบแม้ว่าซึ่งมีมากขึ้นกว่าที่ฉันเคยจะเพิ่มกราฟของฉัน O(n2)
Alex สิบ Brink

ฉันเคยมีปัญหาแบบเดียวกันมาก่อน แต่กราฟของฉันเป็นกราฟที่กระจัดกระจายด้วยและฉันควรจะพิสูจน์การเปลี่ยนแปลงโดยเฉลี่ยคือ O (1) แต่ฉันไม่สามารถทำได้ :-) แต่สำหรับกรณีของคุณฉันคิดว่าถ้าคุณพบความสัมพันธ์ระหว่างสิ่งนี้กับทางออกของ APSP คุณจะได้รับผลลัพธ์บางอย่าง |E|=O(|V|)

คำตอบ:


19

พิจารณาโซ่แบบเชิงเส้นต่อไปนี้ด้วยโหนด , ขอบnและน้ำหนักที่เลือกไว้อย่างเลวทราม:n+1n

example
[ แหล่งที่มา ]

เห็นได้ชัดว่าสามารถเพิ่มขอบตามลำดับน้ำหนักและมีของพวกเขา เพิ่มขอบประ (ซึ่งเป็นกฎหมาย) สร้างเส้นทางสั้นสำหรับทุกคู่( U ฉัน , J )กับฉัน, J = 1 , ... , k ในฐานะที่เป็นk nO(|V|)(ui,bj)i,j=1,,kและสมมติว่าnΘ(|V|)ทั้งแถวแรกและครั้งสุดท้ายประกอบด้วยΘ(|V|)โหนดจำนวนมากในแต่ละและนอกจากทำให้เกิดΘ(|V|2)จำนวนมากที่สั้นที่สุดการเปลี่ยนแปลงเส้นทางkn4nΘ(|V|)Θ(|V|)Θ(|V|2)

ตอนนี้เราสามารถย้าย "ออกไปด้านนอก" ตอนนี้คือเพิ่มขอบถัดไปด้วยน้ำหนักระหว่างu k - 1และb k - 1และอื่น ๆ หากเราทำสิ่งนี้ต่อไป( u 1 , b 1 )เราจะทำให้เกิดผลรวมΘ ( | V | 3n+2uk1bk1(u1,b1)เปลี่ยนเส้นทางที่สั้นที่สุด )Θ(|V|3)

หากสิ่งนี้ไม่โน้มน้าวใจคุณโปรดทราบว่าคุณสามารถเริ่มต้น "กระบวนการ" นี้ด้วยและออกไปข้างนอกจากที่นั่น ด้วยวิธีนี้คุณเพิ่มnขอบซึ่งสาเหตุทั้งหมดΣ n ฉัน= 1ผม2Θ ( n 3 ) = Θ ( | V | 3 )จำนวนมากที่สั้นที่สุดการเปลี่ยนแปลงเส้นทาง --- นี้เป็นไปไม่ได้เพียงแค่การวาดเพื่อให้พอดีกับหนึ่ง จอภาพ(c1,c2)ni=1ni2Θ(n3)=Θ(|V|3)


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