ปัญหาระยะทางสั้นที่สุดพร้อมความยาวเป็นฟังก์ชั่นของเวลา


10

แรงจูงใจ

เมื่อวันก่อนฉันกำลังเดินทางไปรอบ ๆ เมืองด้วยระบบขนส่งสาธารณะและฉันสร้างปัญหากราฟที่น่าสนใจในการสร้างปัญหาในการค้นหาการเชื่อมต่อที่สั้นที่สุดระหว่างสองแห่ง

เราทุกคนรู้ "ปัญหาเส้นทางที่สั้นที่สุด" แบบคลาสสิก: กำหนดกราฟกำกับมีความยาวขอบและสองจุดยอดค้นหาเส้นทางที่สั้นที่สุดระหว่างและ (เช่นเส้นทางที่ลดความยาวขอบทั้งหมด) สมมติว่าความยาวขอบที่ไม่เป็นลบนั้นมีอัลกอริทึมต่าง ๆ และปัญหานั้นง่ายw eR + 0 ,G=(V,E)s , t V s tweR0+,eEs,tVst

นี่เป็นแบบอย่างที่ดีสำหรับกรณีที่เรากำลังเดินเช่น จุดยอดเป็นทางแยกในเครือข่ายถนนของเราและแต่ละขอบมีความยาวคงที่ - เป็นเมตรเป็นต้น การตีความที่เป็นไปได้อีกอย่างของน้ำหนักขอบคือเวลาที่เราต้องเปลี่ยนจากจุดหนึ่งไปยังอีกจุดหนึ่ง นี่คือการตีความที่ฉันสนใจตอนนี้we

ปัญหา

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

วิธีสร้างแบบจำลองสถานการณ์นี้: เรามีกราฟกำกับและฟังก์ชั่นน้ำหนักขอบที่ใช้timeเป็นอาร์กิวเมนต์และส่งคืนเวลาที่ต้องใช้ edge ในเส้นทางของเรา ตัวอย่างเช่นหากรถบัสจากจุดยอดถึงจุดสุดยอดออกที่และใช้เวลาและเรามาถึงจุดยอดที่แล้วคือน้ำหนักขอบ เห็นได้ชัดว่า 5w : E × R + 0G=(V,E) vut=105vt=8w(vu,8)=7w(vu,10)=5w:E×R0+R0+vut=105vt=8w(vu,8)=7w(vu,10)=5

มันยากเล็กน้อยในการกำหนดน้ำหนักรวมของเส้นทาง แต่เราสามารถทำซ้ำได้ ให้เป็นเส้นทางโดยตรง ถ้าแล้ว 0 มิฉะนั้นที่เป็น sub-เส้นทางของโดยไม่ต้องv_kนี่คือคำจำกัดความตามธรรมชาติที่สอดคล้องกับสถานการณ์ในโลกแห่งความจริงP=v1v2vk1vkw ( P ) = 0 w ( P ) = w ( P ) + w ( v k - 1 v k , w ( P ) ) P P v kk=1w(P)=0w(P)=w(P)+w(vk1vk,w(P))PPvk

ตอนนี้เราสามารถศึกษาปัญหาภายใต้สมมติฐานต่างๆในฟังก์ชั่นWสมมติฐานตามธรรมชาติคือ ซึ่งเป็นแบบจำลอง "รอเวลา "W ( E , T ) W ( E , T + Δ ) + Δ  สำหรับทุก  อีE , Δ 0 , Δw

w(e,t)w(e,t+Δ)+Δ for all eE,Δ0,
Δ

หากฟังก์ชัน "ทำงานได้ดี" อาจเป็นไปได้ที่จะลดปัญหานี้เป็นปัญหาเส้นทางลัดที่สั้นที่สุด แต่เราสามารถถามได้ว่าเกิดอะไรขึ้นเมื่อฟังก์ชั่นลดน้ำหนักมีความดุร้าย และถ้าเราวางสมมติฐานในการรอ?

คำถาม

คำถามของฉันมีดังต่อไปนี้

  • เคยมีปัญหานี้มาก่อนหรือไม่? ดูเหมือนเป็นธรรมชาติ
  • มีการวิจัยเกี่ยวกับเรื่องนี้หรือไม่? สำหรับฉันดูเหมือนว่ามีคำถามย่อยมากมายที่จะต้องถามและศึกษา - ส่วนใหญ่เกี่ยวกับคุณสมบัติของฟังก์ชั่นน้ำหนัก
  • เราสามารถลดปัญหานี้ (อาจอยู่ภายใต้สมมติฐานบางอย่าง) กับปัญหาเส้นทางที่สั้นที่สุดแบบดั้งเดิมหรือไม่?

ต่อไปนี้เป็นแนวทางพื้นฐานที่เป็นธรรมชาติเปรียบเทียบกับคำตอบในระดับการวิจัยได้มากขึ้น รูปแบบว่ามันเป็นปัญหาที่เกิดขึ้นโดยการเชื่อม discretizing หน่วยเวลาเข้าไปในคอลเลกชันของ instantsและทำให้กราฟใหม่ที่มีจุดV จากนั้นคุณสามารถใส่ขอบที่t_0) นี่มีประสิทธิภาพอยู่แล้วสำหรับกรณีการใช้งานมากมาย (เช่นด้วยตารางรถบัสคุณแค่ให้เป็นเวลาที่รถบัสมาถึง / ออกจากป้ายจอด) แต่ก็ไม่ได้ทำงานอย่างสมบูรณ์ตลอดเวลา (พิจารณาเมื่อแตกต่างกันไป เวลา) และช้าถ้ามีขนาดใหญ่ V = T × V ( t 0 , v 0 ) ( t 1 , v 1 ) t 1 = w ( ( v 0 , v 1 ) , t 0 ) T w TTV=T×V(t0,v0)(t1,v1)t1=w((v0,v1),t0)TwT
Andrew Morgan

ตัวแปรง่าย ๆ หนึ่งของปัญหานี้ (ที่น้ำหนักขอบขึ้นอยู่กับเวลาเป็นเส้นตรง) เรียกว่า " เส้นทางที่สั้นที่สุดของพารามิเตอร์ "
Neal Young

คำตอบ:


8

nΘ(logn)

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


3

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


1

หากคุณคิดว่าเวลานั้นเป็นส่วนสำคัญ (ซึ่งสมเหตุสมผลในกรณีของการขนส่งมวลชน) คุณสามารถสร้างเครือข่ายที่ขยายเวลาคล้ายกับที่ Ford-Fulkerson แนะนำให้ใช้สำหรับการไหลสูงสุดตลอดเวลา (หรือการไหลที่เร็วที่สุด) และ ค้นหาเส้นทางที่สั้นที่สุดในกราฟนี้แทน

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