ความจริงก็คือคนส่วนใหญ่ใช้รูปแบบที่กำหนดเองของอัลกอริทึมA * คุณจะเห็นสิ่งนี้ใน "คนตัวใหญ่" ส่วนใหญ่ (ฉันไม่สามารถพูดได้ว่าพวกเขาเป็นใครในฟอรัมสาธารณะ แต่ฉันสามารถบอกคุณได้ว่าคุณอาจใช้หนึ่งในนั้น - รับประกัน) ซึ่งการแก้ไขฮิวริสติก ขึ้นอยู่กับชุดข้อมูลที่ใช้
คุณพูดถึงpgroutingเรียบร้อยแล้วซึ่งฉันจะพิจารณาตัวเลือก "ดั้งเดิม" เป็นการดีสำหรับการทำอัลกอริธึมการกำหนดเส้นทางอย่างง่ายและสำหรับปัญหาส่วนใหญ่ นอกจากนี้ยังใช้งานง่ายและใช้ฐานข้อมูลดั้งเดิมที่แบ็กเอนด์
อย่างไรก็ตามมันขึ้นอยู่กับขนาดและประเภทของปัญหาที่คุณพยายามแก้ไขและการกำหนดเส้นทางเป็นปัญหากราฟ
อีกครั้ง "ชายร่างใหญ่" มักจะมีข้อมูลจำนวนมากที่เกี่ยวข้องกับกราฟ (ตัวอย่างเช่นข้อมูลการจราจรเส้นทางรถประจำทางเส้นทางเดินเท้า) ที่มีผลต่ออัลกอริทึมการกำหนดเส้นทาง เหล่านี้เรียกว่านักวางแผนการเดินทางแบบหลายกิริยา (ที่คุณมีตัวเลือกในการวางแผน "โหมด" - ไม่มีเส้นทางจักรยาน - เพียงระบบขนส่งสาธารณะ - สิ่งนั้น) คุณสามารถคิดได้ว่าการวางแผนการเดินทางกลายเป็นประเด็นที่อ่อนไหวต่อเวลาได้อย่างไร (เช่นถ้าคุณเดินกลับไปที่ขอบสองสามด้านคุณจะสามารถนั่งรถไฟใต้ดินที่จะพาคุณไปยังจุดหมายปลายทางของคุณไปข้างหน้าได้เร็วกว่ามาก ใช้ต้นทุนต่ำสุด)
"คนใหญ่" ไม่เก็บข้อมูลของพวกเขาในฐานข้อมูลดั้งเดิมต่อพวกเขาใช้กราฟที่คำนวณล่วงหน้า (ยินดีต้อนรับกลุ่ม hadoop / mapreduce!) อย่างที่คุณสามารถจินตนาการได้กราฟเหล่านี้มีขนาดใหญ่มากดังนั้นการรู้วิธีเชื่อมขอบของกราฟที่อยู่ติดกันอาจเป็นเรื่องที่ท้าทาย
อย่างไรก็ตามฉันขอแนะนำให้คุณดูโครงการกราฟการเราติ้งแบบหลาย modal:
Graphserverอยู่ในใจ ไม่ใช่เอกสารจำนวนมาก แต่มีการเข้ารหัสที่ยอดเยี่ยม (AFAIK ฉันเชื่อว่า MapQuest ใช้รูปแบบของโครงการนี้สำหรับผลิตภัณฑ์เส้นทางของพวกเขา)
ตัวเลือกอื่นจะเป็นOpenTripPlannerซึ่งมีคนฉลาดอยู่เบื้องหลัง (รวมถึงคนจากกราฟเซิร์ฟเวอร์)