python实现Floyd算法

Python实现Floyd算法

Floyd算法是一种用于求解最短路径的算法,它可以求解任意两点之间的最短路径。在本文中,我们将介绍Floyd算法的原理、Python实现及两个示例说明。

Floyd算法原理

Floyd算法是一种动态规划算法,它的核心思想是通过中间节点来更新两点之间的最短路径。具体来说,Floyd算法使用一个二维数组来存储任意两点之间的最短路径,然后通过遍历中间节点来更新这个数组,最终得到任意两点之间的最短路径。

Python实现Floyd算法

在Python中,我们可以使用二维数组来存储任意两点之间的最短路径。具体来说,我们可以使用一个n x n的二维数组来存储任意两点之间的最短路径,其中n表示节点的个数。我们可以使用三重循环来遍历中间节点,然后更新二维数组中的元素。下面是Python实现Floyd算法的代码:

INF = float('inf')

def floyd(graph):
    n = len(graph)
    dist = [[INF] * n for _ in range(n)]
    for i in range(n):
        for j in range(n):
            dist[i][j] = graph[i][j]
    for k in range(n):
        for i in range(n):
            for j in range(n):
                if dist[i][j] > dist[i][k] + dist[k][j]:
                    dist[i][j] = dist[i][k] + dist[k][j]
    return dist

在这个代码中,我们使用了一个INF常量来表示无穷大,使用了一个n x n的二维数组来存储任意两点之间的最短路径。我们使用了三重循环来遍历中间节点,然后更新二维数组中的元素。最后,我们返回二维数组作为结果。

示例说明

示例1:求解任意两点之间的最短路径

在这个示例中,我们将使用Floyd算法来求解任意两点之间的最短路径。假设我们有一个有向图,其中节点之间的距离如下所示:

0  2  6  4
INF 0  3 INF
7 INF 0  1
5 INF 12 0

我们可以使用Floyd算法来求解任意点之间的最短路径,下面是Python代码:

graph = [
    [0, 2, 6, 4],
    [INF, 0, 3, INF],
    [7, INF, 0, 1],
    [5, INF, 12, 0]
]

dist = floyd(graph)
for i in range(len(dist)):
    for j in range(len(dist)):
        if dist[i][j] == INF:
            print('INF', end=' ')
        else:
            print(dist[i][j], end=' ')
    print()

在这个代码中我们使用了一个graph二维数组来表示有向图,使用了Floyd算法来求解任意两点之间的最短路径。我们使用了两重循环来遍历二维数组,然后输出任意两点之间的最短路径。

输出结果如下:

0 2 5 4 
INF 0 3 4 
7 9 0 1 
5 7 10 0 

示例2:求解任意两点之间的最短路径和

在这个示例中,我们将使用Floyd算法来求解任意两点之间的最短路径和。假设我们有一个有向图,节点之间的距离如下所示:

0  2  6  4
INF 0  3 INF
7 INF 0  1
5 INF 12 0

我们可以使用Floyd算法来求解任意两点间的最短路径和,下面是Python代码:

graph = [
    [0, 2, 6, 4],
    [INF, 0, 3, INF],
    [7, INF, 0, 1],
    [5, INF, 12, 0]
]

dist = floyd(graph)
min_dist = INF
for i in range(len(dist)):
    for j in range(len(dist)):
        if dist[i][j] != INF and dist[i][j] < min_dist:
            min_dist = dist[i][j]
print(min_dist)

这个代码中,我们使用了一个graph二维数组来表示有向图,使用了Floyd算法来求解任意两点之间的最短路径和。我们使用了两重循环来遍历二维数组,然后找到任意两点之间的最短路径和。

输出结果为:

4

这个结果表示任意两点之间的最短路径和为4。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现Floyd算法 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python使用scapy模块发包收包

    使用Python编写网络程序是一个非常受欢迎的方法。 Python语言有一个既强大又易于使用的模块,称为Scapy,它是一种Python程序,使用它可以非常容易地实现各种网络操作,包括网络数据包分析、网络嗅探和构建自定义协议。在本文中,我们将重点介绍如何使用Scapy模块的基本功能进行数据包发送和接收。 安装Scapy 使用Scapy模块之前,需要先安装Sc…

    python 2023年6月3日
    00
  • 在python中将字符串转为json对象并取值的方法

    在 Python 中将字符串转为 JSON 对象并取值的方法可以通过使用 json 模块来实现。具体步骤如下: Step 1:导入 json 模块 在使用 json 模块之前,需要先导入该模块。导入方式如下: import json Step 2:使用 json.loads() 方法将字符串转为 JSON 对象 通过使用 json.loads() 方法,可以…

    python 2023年6月3日
    00
  • Python中基本数据类型和常用语法归纳分享

    以下是关于Python中基本数据类型和常用语法的详细攻略: Python中的基本数据类型 Python中包含了各种基本数据类型,包括整型、浮点型、布尔型、字符串等。 整型 整型数据表示整数,例如: a = 123 b = -345 浮点型 浮点型数据表示带有小数部分的数字,例如: a = 1.23 b = -3.45 布尔型 布尔型数据表示真或假,其中Tru…

    python 2023年5月20日
    00
  • 我放弃Python转Go语言的9大理由(附优秀书籍推荐)

    我放弃Python转Go语言的9大理由 引言 作为一名程序员,选择一门编程语言是一个非常重要的决策。我曾经是一名Python开发者,并一度热衷于使用Python开发各种应用。然而,最近我开始转向Go语言,并放弃使用Python。在本文中,我将介绍我选择转向Go语言的9大理由,并推荐一些优秀的Go语言书籍。 理由1:性能 在进行高并发、高负载的任务时,Go语言…

    python 2023年5月19日
    00
  • Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)

    下面我会给出完整的攻略,请认真阅读。 1. 前置知识要求 在学习本篇攻略之前,需要对以下内容有一定的了解: Python基础知识 网络爬虫基础知识 字体反爬机制及解决方案 如果您对以上内容并不熟悉,建议先学习相关知识再来阅读本篇攻略。 2. 需求分析 我们的目标是爬取2021猫眼电影票房榜单,并将结果存储到本地文件中。但是,猫眼电影网站进行了字体加密反爬策略…

    python 2023年5月20日
    00
  • python模块之time模块(实例讲解)

    Python模块之time模块(实例讲解) time模块是Python的标准库之一,提供了一些处理日期、时间和时间范围的函数。这个模块包含了许多时间函数,其中一些被底层操作系统用于处理时间戳。在此,我们将重点介绍在Python代码中使用time模块的方法。 time模块主要函数 下面是time模块中常用的一些函数及其作用。 time.time() 返回当前时…

    python 2023年5月14日
    00
  • Python sys.path详细介绍

    Python sys.path详细介绍 在Python中,sys.path是一个变量,它指向一组字符串,用于指示Python解释器在哪些目录中查找模块文件。本文将深入介绍sys.path的用法及其相关特性。 sys.path的默认值 当Python解释器启动时,会通过如下步骤设置sys.path的默认值: sys.path的第一个元素是空字符串,表示当前工作…

    python 2023年6月2日
    00
  • python regex库实例用法总结

    Python regex库实例用法总结 什么是正则表达式? 正则表达式(Regular Expression) 是用来匹配字符串中字符组合的一种方式。正则表达式是对字符串操作的一种逻辑公式,就是处理字符串的一种方式。正则表达式也称作正规表示法、正规表示式、正规表达式、规则表达式、常规表示法(英文Regular Expression)。 在Python中,可以…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部