gpt4 book ai didi

php - 起点和终点列表的基本非加权寻路

转载 作者:行者123 更新时间:2023-11-29 08:41:51 25 4
gpt4 key购买 nike

我正在制作一个旅游项目,但遇到了一个问题。我已经创建了一个数据库:

ID  Source   Destination

1 C1 C2
2 C3 c4
3 C3 C5
4 C4 C6
5 C8 C9
6 C2 C3

当我从 C1->C6 进行游览时,它应该遵循路径 c1->c2->c3->c4->c6。但是当通过查询检索时,到达 c3 时出现冲突:还有另一个 C3->c5。

如何克服这个问题?

首先,我通过检查 mysql 将 c1 作为源由此,我通过该目的地获取目的地,并将其作为源检查相关目的地

最佳答案

尝试:

CREATE TABLE test (
ID INTEGER NOT NULL,
SOURCE CHAR(2) NOT NULL,
DESTINATION CHAR(2) NOT NULL
);

INSERT INTO test VALUES (1, 'C1', 'C2');
INSERT INTO test VALUES (2, 'C3', 'C4');
INSERT INTO test VALUES (3, 'C3', 'C5');
INSERT INTO test VALUES (4, 'C4', 'C6');
INSERT INTO test VALUES (5, 'C8', 'C9');
INSERT INTO test VALUES (6, 'C2', 'C3');

然后:

SELECT
CONCAT_WS(
'->',
A.SOURCE,
A.DESTINATION,
B.DESTINATION,
C.DESTINATION,
D.DESTINATION
)
FROM test A
LEFT JOIN test B ON B.SOURCE = A.DESTINATION
LEFT JOIN test C ON C.SOURCE = B.DESTINATION
LEFT JOIN test D ON D.SOURCE = C.DESTINATION
WHERE
A.SOURCE = 'C1'
AND 'C6' IN (A.DESTINATION, B.DESTINATION, C.DESTINATION, D.DESTINATION);

这给出:

C1->C2->C3->C4->C6

请记住,此示例仅给出最大深度为 4 的路径,但您可以轻松扩展它。您还将获得所有可能的路径(如果有多个)。因此,您需要决定选择哪一个。

关于php - 起点和终点列表的基本非加权寻路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13578454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com