Python元胞自动机沙堆糖景堵塞模型图学习

🎯要点

  1. 🎯简要图分析:🖊百科信息网络图 | 🖊企业和政府关联图 | 🖊共同购买或共同推荐产品关系图 | 🖊自然语言分析不同文化关系网 | 🖊心理创伤和类型网络属性。
  2. 🎯复杂图:🎯埃尔多斯-雷尼模型:🖊有向图、无向图、完整图、随机图、检查图是否连通,检查模型生成随机图连通的概率。🎯小世界图模型:🖊制作环形晶格,瓦茨-斯特罗加茨图、计算给定节点的局部聚类系数、计算所有节点对之间的路径长度、使用给定参数生成瓦茨-斯特罗加茨图并返回一对(平均路径长度、聚类系数)、广度优先搜索算法查找可达节点、迪杰斯特拉算法寻找最短路径。🎯无标度网络模型:🖊构建一瓦茨-斯特罗加茨图,其节点数和平均度与社交网络相同、生成巴拉巴西-阿尔伯特模型、查看度分布、累计分布。🎯元胞自动机模型:🖊零维和一维元胞自动机模型、使用“互相关”更快地更新模型、表示一维元胞自动机。🎯物理模型:🖊反应扩散模型、渗透模型、分形模型、渗滤模型中的分形。🎯自组织临界性模型:🖊沙堆、长尾分布、分形几何、光谱密度。🎯基于代理的模型:🖊谢林模型、糖景模型、生命有限的糖景模型、波浪式迁徙模型。🎯堵塞模型:🖊交通阻塞。🎯生物演化模型:🖊适应度景观、适应度分布、生存差异,合作演化。
  3. 🎯图数据分析:🎯物种食物链网:🖊邻接矩阵数据 | 🖊有向网络统计计算 | 🖊链网无向图度 | 🖊绘制直方图 | 🖊计算聚类系数 | 🖊生成领结图 | 🖊 广度优先搜索算法计算无向图距离。🎯全球贸易图 | 🎯互联网基础设施图 | 🎯万维网和社交结构图 | 🎯金融结构图 | 🎯图学习

🍇Python广度优先搜索和深度优先搜索算法

💦广度优先搜索算法

给定一个图,其中每条边的权重为 0 或 1。图中还给出了源顶点。找到从源顶点到所有其他顶点的最短路径。

0
1
1
1
1
1
0
0
1
1
1
1
1
0
1
2
3
4
5
6
7
8

查找附近节点的一种简单方法称为 0-1 BFS。 它不是用布尔数组标记访问过的节点,而是在每一步检查条件。 它使用双端队列来存储节点。 如果边的权重为 0,则将该节点插入到队列的前面。 但如果边的权重为 1,则该节点位于后面。

该方法与Dijkstra算法类似。 它根据相邻节点更新到节点的最短距离。 仅当节点的距离可以通过前一个节点的距离来改善时,该节点才会被添加到队列中。 这有助于找到到达节点的最佳路径。

这种方式在很多情况下效果很好。 当从线上取一个点时(如 Dijkstra 的方式),这意味着该点的剩余权重最小。 如果存在权重为 0 的下一个点,则它与刚刚选取的点的距离相同。 但如果下一个点的权重为 1,那么它现在是该行中所有点中距离最远的点。 这是因为所有其他点要么直接连接到当前点,要么连接到已经占用的点。

from sys import maxsize as INT_MAX
from collections import deque

V = 9

class node:
    def __init__(self, to, weight):

        self.to = to
        self.weight = weight

edges = [0] * V
for i in range(V):
    edges[i] = []


def zeroOneBFS(src: int):

    dist = [0] * V
    for i in range(V):
        dist[i] = INT_MAX

    Q = deque()
    dist[src] = 0
    Q.append(src)

    while Q:
        v = Q[0]
        Q.popleft()

        for i in range(len(edges[v])):

            if (dist[edges[v][i].to] > 
                dist[v] + edges[v][i].weight):
                dist[edges[v][i].to] = dist[v] + edges[v][i].weight

                if edges[v][i].weight == 0:
                    Q.appendleft(edges[v][i].to)
                else:
                    Q.append(edges[v][i].to)

    for i in range(V):
        print(dist[i], end = " ")
    print()

def addEdge(u: int, v: int, wt: int):
    edges[u].append(node(v, wt))
    edges[u].append(node(v, wt))

if __name__ == "__main__":

    addEdge(0, 1, 0)
    addEdge(0, 7, 1)
    addEdge(1, 7, 1)
    addEdge(1, 2, 1)
    addEdge(2, 3, 0)
    addEdge(2, 5, 0)
    addEdge(2, 8, 1)
    addEdge(3, 4, 1)
    addEdge(3, 5, 1)
    addEdge(4, 5, 1)
    addEdge(5, 6, 1)
    addEdge(6, 7, 1)
    addEdge(7, 8, 1)

    src = 0
    zeroOneBFS(src)

输出

0 0 1 1 2 1 2 1 2 

💦深度优先搜索算法

给定一个有向图,对于给定图中的所有顶点对 (u, v),找出一个顶点 v 是否可以从另一个顶点 u 到达。 这里的可达性意味着从顶点u到v存在一条路径。可达性矩阵称为图的传递闭包。

0
1
2
3

上图的传递闭包是:

1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 1
from collections import defaultdict
 
class Graph:
 
    def __init__(self,vertices):
        self.V = vertices
 
        self.graph = defaultdict(list)
 
        self.tc = [[0 for j in range(self.V)] for i in range(self.V)]
 
    def addEdge(self, u, v):
        self.graph[u].append(v)
 
    def DFSUtil(self, s, v):

        if(s == v):
            if( v in self.graph[s]):
              self.tc[s][v] = 1
        else:
            self.tc[s][v] = 1
 
        for i in self.graph[v]:
            if self.tc[s][i] == 0:
                if s==i:
                   self.tc[s][i]=1
                else:
                   self.DFSUtil(s, i)
 
    def transitiveClosure(self):

        for i in range(self.V):
            self.DFSUtil(i, i)
        
        print(self.tc)
 
g = Graph(4)
g.addEdge(0, 1)
g.addEdge(0, 2)
g.addEdge(1, 2)
g.addEdge(2, 0)
g.addEdge(2, 3)
g.addEdge(3, 3)
 
g.transitiveClosure()

输出

Transitive closure matrix is 
1 1 1 1 
1 1 1 1 
1 1 1 1 
0 0 0 1

🔗参阅一:计算思维

🔗参阅二:亚图跨际

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/632536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 结构体内存对齐

定义了两个结构体 typedef struct Cmd {uint8_t ua;uint8_t ub;uint8_t uc;uint32_t ue; } Cmd_t;typedef struct Cmd_tag {uint8_t value;uint8_t data[1]; // 将 data 定义为指向 Cmd_t 结构体的指针 } tag_t;在实际使用中,看见前人的代码是,new 一块内…

KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件

KCNScrew Pack是一款Mac序列号查询软件,内置强大的序列号数据库。软件包含数千款软件序列号,基本上大多数常用软件你都可以找到相应的序列号。 KCNScrew Pack for mac v1.8(2024.05.15)激活版 序列号查询软件 主界面 打开KCNScrew可以看到如下的主界面&…

微信自主创建表单投票小程序源码系统 带充值刷礼物功能 附带源代码以及完整的安装部署教程

系统概述 本小程序实现的核心功能包括:用户注册登录、表单提交投票、查看投票结果、在线充值以及赠送礼物等。其中,投票表单可以根据实际需求进行自定义设置,满足不同类型的调查或评选活动。同时,通过引入第三方支付接口&#xf…

STM32_IIC通信

IIC通信 • I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线 • 两根通信线:SCL(串行时钟线)、SDA(串行数据线) • 同步,半双工 • 带数据应答 • 支持总线挂载多…

C 深入指针(4)

目录 一、字符指针变量 1 初始化 2 与字符串数组的区别 二、数组指针变量 1 初始化 2 二维数组传参本质 三、函数指针变量 1 初始化 2 用法 四、typedef关键字 五、函数指针数组 一、字符指针变量 1 初始化 //VS2022 x64 #include <stdio.h> int main() {…

STM32程序下载电路设计

一、背景介绍 使用STM32F103RCT6作为单片机主控芯片&#xff0c;在进行电路板设计过程中&#xff0c;需要预留程序下载接口&#xff0c;可以选择使用JLINK下载器下载程序。 二、设计过程 1、查看STM32F103RCT6的芯片手册&#xff0c;找到下载程序的引脚端口PA13和PA14&#x…

浏览器插件Video Speed Controller(视频倍速播放),与网页自身快捷键冲突/重复/叠加的解决办法

浏览器插件Video Speed Controller&#xff08;视频倍速播放&#xff09;&#xff0c;与网站自身快捷键冲突/重复/叠加的解决办法 插件介绍问题曾今尝试的办法今日发现插件列表中打开Video Speed Controller的设置设置页面翻到下面&#xff0c;打开实验性功能。将需要屏蔽的原网…

抖音小店有订单后怎么发货?实操分享!发货全流程来了

哈喽~我是电商月月 做无货源抖音小店的店铺在出单后怎么发货&#xff1f;今天我就来给大家解答这个问题&#xff0c;其中的注意事项新手商家可以收藏一下&#xff0c;避免犯错 抖音小店的商品出单后&#xff0c;商家在“管理中心-订单管理”页面就能看见所有待处理的订单 一…

IDEA中开发并部署运行WEB项目

IDEA中开发并部署运行WEB项目 1 WEB项目的标准结构2 WEB项目部署的方式3 IDEA中开发并部署运行WEB项目3.1 部署步骤3.2 IDEA关联本地Tomcat 4 IDEA创建web工程5 IDEA部署-运行web项目6 IDEA部署并运行项目的原理 1 WEB项目的标准结构 一个标准的可以用于发布的WEB项目标准结构如…

如何快速实现Java发送邮件功能?

如何使用JAVA发送邮件&#xff1f;&#xff08;不做过多文字解释&#xff0c;详细说明请看代码注释&#xff09; 一&#xff0c;引用相关pom二&#xff0c;实现代码&#xff08;代码参考图片内容&#xff09;三&#xff0c; 接收邮件 一&#xff0c;引用相关pom <dependency…

24长三角C题9页完整建模思路+可执行代码

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…

信息安全相关内容

信息安全 安全防护体系 安全保护等级 安全防护策略 安全技术基础 安全防护体系 安全防护体系有7个等级 安全保护等级 安全保护等级有5个等级,从上到下是越来越安全的用户自主其实就是用户自己本身具有的相应的能力 安全防护策略 安全策略是对抗攻击的主要策略安全日志: …

Java Chassis 3:接口维度负载均衡

本文分享自华为云社区《Java Chassis 3技术解密&#xff1a;接口维度负载均衡》&#xff0c;作者&#xff1a; liubao68。 Java Chassis 3技术解密&#xff1a;接口维度负载均衡 在Java Chassis 3技术解密&#xff1a;负载均衡选择器中解密了Java Chassis 3负载均衡在解决性能…

社交媒体数据恢复:事秘达

社交软件-事秘达的数据恢复教程如下&#xff1a; 首先&#xff0c;你需要停止使用事秘达应用&#xff0c;以避免覆盖已经删除的数据。 接着&#xff0c;你需要连接你的手机到电脑上&#xff0c;并打开手机的USB调试功能。这可以让电脑读取你手机的数据。 下载并安装一个数据恢…

重生奇迹MU快速获取经验解析

重生奇迹MU觉醒卡级怎么办快速获取经验攻略&#xff0c;在游戏中卡级是玩家会遇到的情况之一&#xff0c;面对打不过的敌人和过不去的主线&#xff0c;想办法升级才是最主要的&#xff0c;游戏中有很多获取经验的途径。下面让我们一起来了解一下卡级后获取经验的攻略&#xff0…

PatterNodes 3 mac矢量图设计 ,色彩与图案的完美融合!

PatterNodes 3 for Mac是一款功能强大的矢量图形模式创建软件&#xff0c;专为Mac用户设计。它采用基于节点的界面&#xff0c;支持创建形状、线条、曲线或文本&#xff0c;以构建复杂的矢量图形模式。该软件还具备灵活的参数调整功能&#xff0c;允许用户实时预览结果并进行无…

PLCnext用三种方式去编写一个功能块

先前提到的基于eCLR&#xff0c;PLCnext可以通过几种高级语言编写功能块、函数、等等&#xff0c;今天我们来试一下利用IEC61131、C、C#去制作加法功能块。 1.准备工具 PLCnext Engineer & 1152 Simulator PLCnext Engineer是上位编程软件&#xff0c;免费&#xff0c;11…

通俗易懂的策略模式讲解

什么是策略模式&#xff1f; 策略模式是一种设计模式&#xff0c;它允许你定义一系列的算法&#xff08;策略&#xff09;&#xff0c;并将每个算法封装成一个对象。这样&#xff0c;你可以轻松地切换不同的算法&#xff0c;而不需要改变原始代码。 一个简单的例子 假设你是…

ACM实训冲刺第八天

【碎碎念】由于昨天做的题都有思路&#xff0c;加上今天有点疲惫&#xff0c;故今天先不复习了&#xff0c;直接开始今天的算法学习 Tokitsukaze and All Zero Sequence 问题 思路 读入测试用例数&#xff1a;首先读取一个整数t&#xff0c;表示接下来会有t组数据需要处理。遍…

【达梦数据库】搭建 DM->mysql dblink

DM->mysql dblink 1安装mysql odbc rpm -ivh mysql-connector-odbc-5.3.14-1.el7.x86_64.rpm2mysql创建远程用户与远程数据库 mysql> show databases; ------------------------- | Database | ------------------------- | information_schema | …