C++和Python通信引文道路社评电商大规模行为图结构数据模型

🎯要点

  1. 🎯图论数学逻辑和计算:🖊定向网络节点和边 | 🖊节点的入度 | 🖊出度和度 | 🖊源节点 | 🖊汇节点 | 🖊 孤立节点 | 🖊入度分布和出度分布 | 🖊平均度 | 🖊平均入读和平均出度 | 🖊随机节点距离 | 🖊最短路径长度分布 | 🖊节点聚类系数及分布和平均聚类系数。
  2. 🎯图结构和算法:🖊计算入度和出度分布并绘制每个分布的幂律 | 🖊广度优先搜索算法遍历节点 | 🖊绘制算法遍历节点的累积分布 | 🖊创建前向后向度优先搜索算法图 | 🖊计算出入分量的节点 | 🖊计算两节点存在的路径的概率 | 🖊计算两网络弱连通分量算法下,连接的节点对概率。
  3. 🎯图模型和概率:🖊生成埃尔多什-雷尼随机图 | 🖊生成配置模型随机图 | 🖊计算上述图度分布 | 🖊计算最短路径长度分布 | 🖊聚类系数分布 | 🖊弱连通分量算法大小分布。
  4. 🎯小世界图 | 🎯社交软件图结构 | 🎯点评网络 | 🎯影响力

🍇Python图节点和度

a
b
d
e
c
f

数学和计算机科学中的“图” 由“节点”(也称为“顶点”)组成。节点之间可能连接也可能不连接。

节点“a”与节点“c”连接,但“a”不与“b”连接。 两个节点之间的连接线称为边。 如果节点之间的边是无向的,则该图称为无向图。 如果一条边从一个顶点(节点)指向另一个顶点(节点),则图称为有向图。 有向边称为弧。 尽管图表看起来非常理论化,但许多实际问题都可以用图表来表示。 它们通常用于对物理、生物学、心理学,尤其是计算机科学中的问题或情况进行建模。 在计算机科学中,图用于表示通信网络、数据组织、计算设备、计算流程、在后一种情况下,它们用于表示数据组织,例如操作系统的文件系统或通信网络。 网站的链接结构也可以看作是图,即有向图,因为链接是有向边或弧。 Python 没有内置的图形数据类型或类,但在 Python 中很容易实现它们。 一种数据类型非常适合在 Python 中表示图形,即字典。 我们图中的图表可以通过以下方式实现:

graph = { "a" : {"c"},"b" : {"c", "e"},"c" : {"a", "b", "d", "e"},"d" : {"c"},"e" : {"c", "b"},"f" : {}}

上面字典的键是我们图的节点。 相应的值是用节点设置的,节点通过边连接。 集合比列表或元组更好,因为这样,两个节点之间只能有一条边。 没有比这更简单、更优雅的方式来表示图表了。边也可以理想地实现为具有两个元素(即端节点)的集合。这对于无向图来说是理想的。对于有向图,我们更喜欢使用列表或元组来实现边。

生成所有边列表的函数:

def generate_edges(graph):edges = []for node in graph:for neighbour in graph[node]:edges.append({node, neighbour})return edgesprint(generate_edges(graph))

输出:

[{'c', 'a'}, {'c', 'b'}, {'b', 'e'}, {'c', 'd'}, {'c', 'b'}, {'c', 'e'}, {'c', 'a'}, {'c', 'd'}, {'c', 'e'}, {'b', 'e'}]

正如我们所看到的,没有包含节点“f”的边。 “f”是我们图中的一个孤立节点。以下 Python 函数计算给定图的孤立节点:

def find_isolated_nodes(graph):isolated = set()for node in graph:if not graph[node]:isolated.add(node)return isolated
a
d
c
b
e
f

如果您查看我们类的以下清单,您可以在 init 方法中看到我们使用字典“self._graph_dict”来存储顶点及其相应的相邻顶点。

class Graph(object):def __init__(self, graph_dict=None):if graph_dict == None:graph_dict = {}self._graph_dict = graph_dictdef edges(self, vertice):return self._graph_dict[vertice]def all_vertices(self):return set(self._graph_dict.keys())def all_edges(self):return self.__generate_edges()def add_vertex(self, vertex):if vertex not in self._graph_dict:self._graph_dict[vertex] = []def add_edge(self, edge):edge = set(edge)vertex1, vertex2 = tuple(edge)for x, y in [(vertex1, vertex2), (vertex2, vertex1)]:if x in self._graph_dict:self._graph_dict[x].add(y)else:self._graph_dict[x] = [y]def __generate_edges(self):edges = []for vertex in self._graph_dict:for neighbour in self._graph_dict[vertex]:if {neighbour, vertex} not in edges:edges.append({vertex, neighbour})return edgesdef __iter__(self):self._iter_obj = iter(self._graph_dict)return self._iter_objdef __next__(self):return next(self._iter_obj)def __str__(self):res = "vertices: "for k in self._graph_dict:res += str(k) + " "res += "\nedges: "for edge in self.__generate_edges():res += str(edge) + " "return res

我们想玩一下我们的图表。我们从迭代图表开始。迭代意味着迭代顶点。

g = { "a" : {"d"},"b" : {"c"},"c" : {"b", "c", "d", "e"},"d" : {"a", "c"},"e" : {"c"},"f" : {}}graph = Graph(g)for vertice in graph:print(f"Edges of vertice {vertice}: ", graph.edges(vertice))

输出:

Edges of vertice a:  {'d'}
Edges of vertice b:  {'c'}
Edges of vertice c:  {'c', 'd', 'b', 'e'}
Edges of vertice d:  {'c', 'a'}
Edges of vertice e:  {'c'}
Edges of vertice f:  {}

参阅一:计算思维

参阅二:亚图跨际

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL中的子查询

子查询,在一个查询语句中又出现了查询语句 子查询可以出现在from和where后面 from 表子查询(结果一般为多行多列)把查询结果继续当一张表对待 where 标量子查询(结果集只有一行一列)查询身高最高的学生,查询到一个最高身高 列子查询(结果集只有一行多列) 对上表进行如下操作 …

韩顺平0基础学Java——第10天

p202-233 类与对象(第七章) 成员方法 person类中的speak方法: 1.public表示方法是公开的 2.void表示方法没有返回值 3.speak()中,speak表示方法名,括号是形参列表。 4.大括号为方法体&am…

WPF之多种视图切换

1&#xff0c;View切换&#xff0c;效果呈现 视图1 视图2 视图3 2&#xff0c;在Xaml中添加Listview控件&#xff0c;Combobox控件。 <Grid ><Grid.RowDefinitions><RowDefinition Height"143*"/><RowDefinition Height"30"/>&l…

【Arduino】delay()、millis() 时间函数

目录 1、延时函数 2、运行时间函数 3、不使用delay() 函数实现定时、等待 1、延时函数 通过延迟函数&#xff0c;我们可以实现LED灯以1S为间隔闪送。 void setup() {pinMode(LED_BUILTIN,OUTPUT); //定义引脚&#xff0c;告诉ESP8266那个引脚做什么用&#xff0c;模式是什…

Leetcode经典题目之用队列实现栈

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 目录 1、题目展示2、题目分析3、完整代码演示4、结语 1、题目展示 前面我们了解过如何实现队列…

unetr_plus_plus(UNETR++、nnU-Net)系列数据处理理解汇总

unetr_plus_plus&#xff08;UNETR、nnU-Net&#xff09;系列数据处理理解汇总&#xff0c;这是一个 3D 图像分割的任务系列集。 为什么说他们是一个系列集合呢&#xff1f;主要是因为&#xff1a; 论文的训练和评价数据集是一样的&#xff0c;都是来自于10全挑战赛&#xff…

第五百回 Get路由管理

文章目录 1. 概念介绍2. 使用方法2.1 普通路由2.2 命名路由 3. 示例代码4. 内容总结 我们在上一章回中介绍了"使用get显示Dialog"相关的内容&#xff0c;本章回中将介绍使用get进行路由管理.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章…

掌握MySQL常用的命令

前言 MySQL是一个流行的开源关系型数据库管理系统&#xff0c;广泛应用于各种应用场景。熟练掌握MySQL的常用命令&#xff0c;对于数据库管理员和开发人员来说至关重要。本文将介绍MySQL数据库的一些基础术语、SQL语言分类&#xff0c;以及DDL、DML、DQL和DCL等操作&#xff0…

高并发场景

缓存穿透 定义 大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨大的压力 举个例子 某个黑客故意制造一些非法的 key 发起大量…

C++类与对象的一些练习

1.设计一个名为Rectangle的矩形类&#xff0c;其属性为矩形的长和宽&#xff0c;能计算和输出矩形的周长和面积。 class Rectangle { public:Rectangle(int c0,int k0):m_c(c),m_k(k){}int length()//周长{return 2 * (m_c m_k);}int area()//面积{return m_c * m_k;} privat…

如何优雅简单地写 Controller 层代码?

本篇就来介绍一下&#xff0c;如何写好一个 controller &#xff0c;让你的接口变的更加优雅&#xff01; 一个完整的后端请求由 4 部分组成&#xff1a; 接口地址&#xff08;也就是 URL 地址&#xff09; 请求方式&#xff08;一般就是 get、set&#xff0c;当然还有 put、…

算法-排序详解

目录 前言 比较排序 选择排序 插入排序 冒泡排序 归并排序 快速排序 非比较类排序 计数排序 桶排序 基数排序 排序的稳定性 排序算法的题目 前言 计算机的工作之一就是对数据的处理&#xff0c;处理数据有一个常见的操作就是对数据排序&#xff0c;比如新闻系统总…

Linux——进程间通信

目录 一、进程通信的初步认识 1.1 进程间通信目的 1.2 进程间通信的种类 管道&#xff08;Pipes&#xff09; System V IPC POSIX IPC 三、管道 3.1 知识铺垫 3.2 匿名管道 3.2.1 基本概念 3.2.2 测试用例&#xff1a; 3.3 管道的行为 3.4 命名管道 3.4.1 基本概念…

Django Admin后台管理:高效开发与实践

title: Django Admin后台管理&#xff1a;高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 tags: DjangoAdmin模型管理用户认证数据优化自定义扩展实战案例性能安全 第1章&#xff1a;Django Admin基础 1.1 Django Admin简介 Dj…

手撕C语言题典——反转链表

目录 前言 一.思路 1&#xff09;创建新链表 2&#xff09;创建三个指针 二.代码实现 搭配食用更佳哦~~ 数据结构之单单单——链表-CSDN博客 数据结构之单链表的基本操作-CSDN博客 前面学了单链表的相关知识&#xff0c;我们来尝试做一下关于顺序表的经典算法题~ 前言 反转…

Github 2024-05-12 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Filament: 加速Laravel开发的完美起点 创建周期:1410 天开发语言:PHP协议类型:MIT LicenseStar数量:12228 个Fork数量:1990 次关…

Isaac Sim 4 键盘控制小车前进方向(学习笔记5.8.2)

写的乱糟糟&#xff0c;主要是这两周忘了记录了...吭哧吭哧往下搞&#xff0c;突然想起来要留档&#xff0c;先大致写一个&#xff0c;后面再往里添加和修改吧&#xff0c;再不写就全忘了 有一个一直没解决的问题&#xff1a; 在保存文件时出现问题&#xff1a;isaac sim mism…

Docker学习(带图详细)

一、安装docker 参考官方文档&#xff1a;https://docs.docker.com/engine/install/centos/ 查看系统版本 [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [rootlocalhost ~]# [rootlocalhost ~]# uname -a Linux localhost.localdomai…

Entity Framework Core中的延迟加载和即时加载

在Entity Framework Core&#xff08;EF Core&#xff09;中&#xff0c;延迟加载&#xff08;Lazy Loading&#xff09;和即时加载&#xff08;也称为早期加载或显式加载&#xff09;是两种主要的数据加载模式&#xff0c;它们在加载相关数据时有着不同的策略和优势。以下是这…

Leetcode 3145. Find Products of Elements of Big Array

Leetcode 3145. Find Products of Elements of Big Array 1. 解题思路2. 代码实现 题目链接&#xff1a;3145. Find Products of Elements of Big Array 1. 解题思路 这道题思路上还是比较直接的&#xff0c;就是实现上非常的繁琐&#xff0c;着实花了不少力气。 显然&…