mysql - 如何高效地存储位置和路径并找出最短的旅行路线

标签 mysql oracle postgresql database-design

我在解决面试问题时卡住了。

         place C

place A----------Place B


      place D

假设我可以通过 3-4 条路径从地点 A 到达地点 B(直接路径和间接路径)。

我必须存储它们并检索最短路径。

我可以做表格,但我无法选择最短距离路径。

我创建了如下表格。

table1:
create LocationDetails(
  locnid integer primary key,
  locnname text
  );

table 2:
create PathDescription(
  pathid integer primary key,
  startlocnid integer,
  endlocnid integer,
  distance integer
  );

ALTER TABLE PathDescription
  ADD CONSTRAINT fk_PathDescription1
  FOREIGN KEY (startlocnid)
  REFERENCES Persons(locnid);

ALTER TABLE PathDescription
  ADD CONSTRAINT fk_PathDescription
  FOREIGN KEY (endlocnid)
  REFERENCES Persons(locnid);

但是现在的问题是选择一条覆盖最小距离的路径作为 从地点 A 到地点 B 有很多间接路径。

请帮帮我

谢谢 问候

最佳答案

要选择最短路径,您应该使用 Dijkstra 算法,您会在 google 上找到很多信息和实现。

在维基百科中还有一个伪代码片段:http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

关于mysql - 如何高效地存储位置和路径并找出最短的旅行路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29325156/

相关文章:

c# - 如何在 Odoo 中批量插入记录?

postgresql - 在带有 SELECT 语句的 INSERT INTO 语句中返回

php - 如何使用 foreach 从购物车函数创建(或插入到 MySQL 中)单个订单 ID

sql - Oracle:识别时间序列中的峰值

mysql - 添加字符串而不是结果 0 作为 mysql SUM 的结果

oracle - 安装 Oracle 数据库快捷版 11g 时出现问题

mysql - to_number() 的兼容性查询

postgresql - 如何阻止 Go gorm 对我在 Postgres 中的自引用外键强制非空约束

php - 使用 php 进行电子邮件转发 | craigslist 的匿名电子邮件生成器

php - 查询 Laravel 深夜营业时间