深度优先算法和广度优先算法以及Networkx包的使用

  • 深度优先算法
  • 深度优先算法
  • Networkx包的使用
  • 狄克斯特拉算法(Dijkstra's algorithm)

深度优先算法

graph = {'A':['B','C'], 'B':['A','C','D'],'C':['A','B','C','D'],'D':['B','C','E','F'],'E':['C','D'],'F':['D']}
def dfs(graph, s):queue=[]seen = []queue.append(s)seen.append(s)while queue:vertex = queue.pop()nodes = graph[vertex]for node in nodes:if node not in seen:queue.append(node)seen.append(node)print(vertex)

深度优先算法

graph = {'A':['B','C'], 'B':['A','C','D'],'C':['A','B','C','D'],'D':['B','C','E','F'],'E':['C','D'],'F':['D']}
def bfs(graph, s):queue=[]seen = []queue.append(s)seen.append(s)while queue:vertex = queue.pop(0)nodes = graph[vertex]for node in nodes:if node not in seen:queue.append(node)seen.append(node)print(vertex)

Networkx包的使用

import networkx as nx
G = nx.Graph()
nodes = ['s', 'a', 'z', 'x', 'd', 'c', 'f', 'v']
G.add_nodes_from(nodes)
ebunch = [('a', 'z'), ('a', 's'), ('s', 'x'), ('x', 'd'),('d', 'c'), ('x', 'c'), ('d', 'f'), ('c', 'f'),('c', 'v'), ('f', 'v')]
G.add_edges_from(ebunch)
nx.draw(G, pos=nx.spring_layout(G), with_labels=True, font_size=24, node_size=2640)
print(nx.shortest_path(G, 's'))

狄克斯特拉算法(Dijkstra’s algorithm)


动手之前,你需要做些准备工作:创建一个表格,在其中列出每个节点的开销。这里的开销指的是达到节点需要额外支付多少钱。

在执行狄克斯特拉算法的过程中,你将不断更新这个表。为计算最终路径,还需在这个表中添加表示父节点
的列。

第一步:找出最便宜的节点。
第二步:计算前往该节点的各个邻居的开销。

再次执行第一步:下一个最便宜的节点是黑胶唱片——需要额外支付5美元

再次执行第一步:下一个最便宜的节点是黑胶唱片——需要额外支付5美元。
再次执行第二步:更新黑胶唱片的各个邻居的开销。

你更新了架子鼓和吉他的开销!这意味着经“黑胶唱片”前往“架子鼓”和“吉他”的开销更低,因此你将这些乐器的父节点改为黑胶唱片。下一个最便宜的是吉他,因此更新其邻居的开销。

你终于计算出了用吉他换钢琴的开销,于是你将其父节点设置为吉他。最后,对最后一个节点——架子鼓,做同样的处理。

如果用架子鼓换钢琴,Rama需要额外支付的费用更少。因此,采用最便宜的交换路径时,Rama需要额外支付35美元。现在来兑现前面的承诺,确定最终的路径。当前,我们知道最短路径的开销为35美元,但如何确定这条路径呢?为此,先找出钢琴的父节点。

深度优先算法和广度优先算法以及Networkx包的使用相关推荐

  1. 深度优先算法和广度优先算法

    深度优先算法和广度优先算法 介绍 图的定义 邻接表 邻接矩阵 广度优先算法 广度优先算法的实现 广度优先算法的应用 深度优先算法 深度优先算法的实现 后续 介绍 在数据结构中,树和图可以说是不可或缺的 ...

  2. 深度优先算法和广度优先算法(python)

    深度优先算法:深度优先搜索算法(Depth-First-Search),是搜索算法的一种.是沿着树的深度遍历树的节点,尽可能深的搜索树的分支.当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条 ...

  3. 学习随笔#8 深度优先算法和广度优先算法

    深度优先算法和广度优先算法 图的基本概念 深度优先算法 广度优先算法 图的基本概念   由结点和连接每对结点的边所构成的图形就是图.图可以有以下分类: 如果给边加上一个值表示权重,这种图就是加权图,没 ...

  4. 深度优先算法与广度优先算法的理解与常用场景

    深度优先算法: 我的理解 就像走迷宫,每次遇到岔道口就要选一条路来走,每次遇到死胡同就要原路返回找到上一个路口选择其他的路,直到找到出口,显然最坏的情况是遍历完所有的道路后才找到出路,适用于在一个大整 ...

  5. 图的深度优先算法和广度优先算法

    A B C D E F A 0 1 1 0 0 0 B 1 0 1 1 0 0 C 1 1 0 0 0 0 D 0 1 0 0 0 0 E 0 0 0 0 0 1 F 0 0 0 0 1 0 f记录的 ...

  6. 算法之深度优先、广度优先算法

    目录 前言: 搜索算法: 广度优先搜索算法 深度优先搜索算法 问题:如何找出社交网络中某个用户的三度好友关系? 总结: 参考资料: 前言: 图这种数据结构经常用于表示一个社交网络,在社交网络中有一个六 ...

  7. 广度优先算法和深度优先算法-树形结构(层级结构)-Java

    广度优先算法和深度优先算法-树形结构(层级结构)-Java 目录 文章目录 1.前言 2.递归 3.栈+深度优先算法 4.队列+广度优先算法 5.比较 ***后记*** : 内容 1.前言 在日常应用 ...

  8. 浅谈网络爬虫中广度优先算法和代码实现

    前几天给大家分享了网络爬虫中深度优先算法的介绍及其代码实现过程,没来得及上车的小伙伴们可以戳这篇文章--浅谈网络爬虫中深度优先算法和简单代码实现.今天小编给大家分享网络爬虫中广度优先算法的介绍及其代码 ...

  9. 广度优先算法(BFS)

    根据访问节点的顺序与方式,可以分为广度优先算法(BFS)和深度优先算法(DFS),本文我打算先介绍广度优先算法: 广度优先算法 1. 算法概述 广度优先搜索算法(又称宽度优先搜索.BFS)是最简便的图 ...

最新文章

  1. 27 个问题,告诉你 Python 为什么如此设计?
  2. 弱电工程数据中心计算机房内布线
  3. 归并排序算法(C#实现)
  4. android shape.xml 属性详解
  5. EF框架step by step(4)—DBcontext应用于已存在数据库
  6. 服务器配置列表在哪个文件夹,FolderMagic
  7. 华为路由交换常见配置
  8. 毕业前五年,我们应该把钱看轻
  9. java 编译单个文件_单独Java文件的通用快速编译方法
  10. 多种富文本编辑器的对比
  11. 关于wps公式编辑器的大括号里面空白很大
  12. 使用spring data Querydsl 实现动态查询功能
  13. 【MapGIS】常见问题处理
  14. html 换行特殊符号,html 换行符号
  15. 新浪微博批量删除微博的方法
  16. 安徽省计算机二级水平考试试卷,安徽省计算机二级考试理论试题(附答案)
  17. Allegro PCB多层板中负片热风焊盘的制作以及flash的添加
  18. 四川农业大学计算机考研调剂,四川农业大学调剂基本条件
  19. [笔记]NFC笔记——WUP_REQ 和 WUP_RES 消息结构
  20. H5调用手机的前后摄像头,canvas显示,自带截图,兼容ios和android

热门文章

  1. 九幽2015年Q3 WP市场份额细分报告
  2. conda 添加清华源
  3. mysql 笔试题_MYSQL基础笔试题
  4. classcastexception异常_Java 最全异常讲解
  5. 详解字节输入流InputStream
  6. 2021年流动式起重机司机新版试题及流动式起重机司机复审考试
  7. python3中的format函数
  8. vscode 调试参数_VSCode调试配置
  9. VScode调试方法
  10. AutoEventWireup属性