以下示例给出最短路径1-2-6-7-3-4,其中仅考虑边的权重;并且不计算顶点转弯的重量。有人可以建议一个程序,在不转弯,右转或左转的每个顶点包括重量?我们可以假设(NT,RT,LT)的权重=(0,0.5,1)。当边缘权重与转弯效果相结合时,最短路径将变为1-2-3-4。以下是有问题的示例。谢谢。
#library(igraph)
n <- c(1,2,3,4,5,6,7,8)
x <- c(1,4,7,10,1,4,7,10)
y <- c(1,1,1,1,4,4,4,4)
node <- data.frame(n,x,y)
fm <- c(1,2,3,5,6,7,1,2,3,4)
to<-c(2,3,4,6,7,8,5,6,7,8)
weight<- c(1,4,1,1,1,2,5,1,1,1)
link <- data.frame(fm,to,weight)
g <- graph.data.frame(link,directed=FALSE,vertices=node)
sv <- get.shortest.paths(g,1,4,weights=NULL,output="vpath")
sv
E(g)$color <- "pink"
E(g, path=sv[[1]])$width <- 8
plot(g,edge.color="red")
plot(g,edge.label=weight,edge.label.color="blue",edge.label.cex=2)
答案 0 :(得分:0)
作为预处理步骤:对于具有v
个传入边和a
个传出边的每个顶点b
,将其拆分为连接到这些传入边的a
个顶点和{{ 1}}顶点连接到那些传出边。然后创建表示两者之间转折成本的边。
答案 1 :(得分:0)
原则上,Jeffery正在描述我们想要的东西,但问题的大小是我们需要一个程序化的解决方案。也许200,000个顶点有3到6个边。例如,如果有一种方法可以爆炸,那么4个边缘和4个边缘的标准交叉点将向右移动16个左右,并自动分配左右惩罚。
最重要的是能够在T交叉口转弯(轻松寻路),而不是转向传统交叉路口/顶点
这对于庞大的网络来说是否容易处理?