java 最短遍历路径_凯文培根游戏的最短路径图遍历
我一直在尝试为流行的凯文培根游戏创建一个图形表示 . 我已经创建了图形和顶点类,但是在创建宽度第一搜索方法来遍历图形并找到从凯文培根到演员的最短路径时遇到了一些麻烦,并在路上打印出边缘 . 用户应该输入一个演员,程序应该找到从凯文培根到该演员的最短路径 . 然后用户将继续进入演员,并且将获取到该演员的最短路径,并打印出凯文培根数字,否则它将打印出来 .
有一个顶点和图表类 . 顶点类是一个字典,它包含它连接到的其他顶点和边 .
我正在使用的数据如下所示:
顶点:
[“凯文培根”,“演员1”,“演员2”,“演员3”,“演员4”,“演员5”,“演员6”]
边:
(“凯文培根”,“演员1”,“movie1”)
(“凯文培根”,“演员2”,“movie1”)
(“actor1”,“actor2”,“movie1”)
(“actor1”,“actor3”,“movie2”)
(“actor3”,“actor2”,“movie3”)
(“actor3”,“actor4”,“movie4”)
(“actor5”,“actor6”,“movie5”)
电影是边缘名称或权重,而元组的其他部分是顶点 . 我希望BFS算法打印出所有边缘和凯文培根数字,或打印出如果无法到达演员则不可能 .
这是迄今为止的代码 . 任何建议和帮助表示赞赏 .
感谢您的时间
class Vertex:
'''
keep track of the vertices to which it is connected, and the weight of each edge
'''
def __init__(self, key):
'''
'''
self.ID = key
self.connected_to = {}
def add_neighbor(self, neighbor, weight=0):
'''
add a connection from this vertex to anothe
'''
self.connected_to[neighbor] = weight
def __str__(self):
'''
returns all of the vertices in the adjacency list, as represented by the connectedTo instance variable
'''
return str(self.ID) + ' connected to: ' + str([x.ID for x in self.connected_to])
def get_connections(self):
'''
returns all of the connections for each of the keys
'''
return self.connected_to.keys()
def get_ID(self):
'''
returns the current key id
'''
return self.ID
def get_weight(self, neighbor):
'''
returns the weight of the edge from this vertex to the vertex passed as a parameter
'''
return self.connected_to[neighbor]
class Graph:
'''
contains a dictionary that maps vertex names to vertex objects.
'''
def __init__(self):
'''
'''
self.vert_list = {}
self.num_vertices = 0
def __str__(self):
'''
'''
edges = ""
for vert in self.vert_list.values():
for vert2 in vert.get_connections():
edges += "(%s, %s)\n" %(vert.get_ID(), vert2.get_ID())
return edges
def add_vertex(self, key):
'''
adding vertices to a graph
'''
self.num_vertices = self.num_vertices + 1
new_vertex = Vertex(key)
self.vert_list[key] = new_vertex
return new_vertex
def get_vertex(self, n):
'''
'''
if n in self.vert_list:
return self.vert_list[n]
else:
return None
def __contains__(self, n):
'''
in operator
'''
return n in self.vert_list
def add_edge(self, f, t, cost=0):
'''
connecting one vertex to another
'''
if f not in self.vert_list:
nv = self.add_vertex(f)
if t not in self.vert_list:
nv = self.add_vertex(t)
self.vert_list[f].add_neighbor(self.vert_list[t], cost)
def get_vertices(self):
'''
returns the names of all of the vertices in the graph
'''
return self.vert_list.keys()
def __iter__(self):
'''
for functionality
'''
return iter(self.vert_list.values())
def bfs(self):
'''
Needs to be implemented
'''
pass
java 最短遍历路径_凯文培根游戏的最短路径图遍历相关推荐
- java 配置文件的路径_详解java配置文件的路径问题
详解java配置文件的路径问题 详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设 ...
- java rpm 安装路径_如何查找rpm方式安装的软件路径
首先要申明一下which java是定位不到安装路径的.which java定位到的是java程序的执行路径.网上的资料都是人云亦云,完全不去思考.那么怎么定位到java的安装路径呢?下面我们来看看例 ...
- java 取上下文路径_取得上下文路径的方式(getContextPath)
jsp可以直接取得取得上下文路径,但是js不能,需要在jsp里设置属性再根据属性获取或者通过window.loaction的方式做处理后取得. 1.通过监听器,获取 1.1web.xml文件配置监听器 ...
- linux 查看java版本和路径_在linux中查看jdk的版本以及安装路径
如何在一台Linux服务器上查找JDK的安装路径呢? 有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢? 下面总结了一下如何查找JDK安装路径的方法. 1:echo $JAVA_HOME 使 ...
- java 配置文件配置路径_详解java配置文件的路径问题
详解java配置文件的路径问题 各种语言都有自己所支持的配置文件,配置文件中有很多变量是经常改变的.不将程序中的各种变量写死,这样能更方便地脱离程序本身去修改相关变量设置. 那么我们需要读取配置文件, ...
- java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...
手写递归方法 //定义检测数据类型的功能函数 function checkedType(target) { return Object.prototype.toString.call(target). ...
- java io 文件路径_【IO流】java中文件路径(相对路径、绝对路径)相关类及方法...
1. URL 菜鸟教程:Java URL处理 通常推荐对http等协议进行使用,若操作(file:)部分属性将无意义,建议getFile(). 相关:URLConnections 类 可以打开连接进行 ...
- java 运行时路径_如何在运行时检查当前Java类路径(重复)
下面的代码实现了Java 9 +(JigSAW)中的模块路径扫描.它查找调用堆栈上的所有类,然后对每个类引用调用 classRef.getModule().getLayer().getConfigur ...
- java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...
最新文章
- GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
- $.extend 的相关用法
- python学习笔记--turtle库的使用
- MySQL 高级 - 索引 - 数据结构
- 演示方法:有抱负的分析师
- excel趋势线公式导出_如何用Excel进行预测分析?
- cygwin安装好了如何添加cmake make_在windows上使用cmake
- java day23【函数式接口】
- balenaEtcher for mac(启动盘制作工具)免费版
- WebGoat系列实验Buffer Overflows Code Quality Concurrency
- 客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
- ChinaDDoS BGP 流量牵引二层VLAN回注配置
- 红外夜视摄像头 蒂卡尔K-TF使用手记 2
- 酷派无线升级服务器设置在哪里,酷派手机CDA自助升级线刷工具安装教程
- YUV格式视频流文件下载
- Vue 倒计时插件 vue2-countdown
- 电脑声音图标显示正常却没有声音,扬声器显示未插入
- 其他——精灵 4 RTK常见问题
- LSV又新增13个地质图!量测对比分析全都能搞定
- 腾讯6大核心业务打造坚固护城河