Со следующими данными начальных и конечных точек, как мы можем получить маршруты между 2 точками.Найти маршруты между двумя точками в R
> ddf
start end
1 a b
2 a c
3 b e
4 b f
5 b c
6 a d
7 e f
8 f g
> dput(ddf)
structure(list(start = structure(c(1L, 1L, 2L, 2L, 2L, 1L, 3L,
4L), .Label = c("a", "b", "e", "f"), class = "factor"), end = structure(c(1L,
2L, 4L, 5L, 2L, 3L, 5L, 6L), .Label = c("b", "c", "d", "e", "f",
"g"), class = "factor")), .Names = c("start", "end"), class = "data.frame", row.names = c(NA,
-8L))
>
Эта страница (http://www.anselm.edu/homepage/mmalita/culpro/graf1.html) показывает только 2 решения строки в Прологе! Следующий код работает, но не дает правильного выходного списка. Его можно запустить с помощью mainpath (ddf, 'a', 'f'), чтобы найти путь между 'a' и 'f'.
Уверен, что это может быть значительно улучшено, особенно все это для циклов и т. Д. Можно удалить, используя функции приложения и т. Д. Я знаю, что пакеты с такими функциями доступны, но как это можно сделать в базе R? Ваши ответы/комментарии будут оценены.
Например, что означает 'mainpath (ddf," a "," g ")' return? Не могли бы вы привести пример «mainpath» или даже что-то вроде более конкретных ожидаемых результатов? –
Это отправная точка для поиска пути между «a» и «g». – rnso
Попробуйте графический подход: 'library (igraph); shortest_paths (make_graph (c (t (df)), direct = F), "a", to = "f") ' –