Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法

73 篇文章 0 订阅
54 篇文章 0 订阅

🎯要点

🎯马尔可夫随机场网格推理学习 | 🎯二维伊辛模型四连网格模型推理 | 🎯统计物理学模型扰动与最大乘积二值反卷积 | 🎯受限玻尔兹曼机扰动和最大乘积采样 | 🎯视觉概率生成模型测试图像

🎯机器人图算法:运动建模、定位、姿态同时定位和绘图和基于地标的同时定位和绘图 | 🎯共轭梯度优化、视觉里程计、视觉同时定位和绘图图算法 | 🎯机器人运动最小二乘问题图算法 | 🎯全球导航卫星系统移动物体定位图算法 | 🎯机器人触觉估算物体姿态图算法

📜图模型用例

📜Python问题决策影响图结构化概率模型

📜Python汽车油耗活塞循环原木纱强度及电阻覆盖率现实统计模型计算

📜Python | R | MATLAB群体消息和遗传病筛选多元统计模型

📜Python神经模型评估微分方程图算法

📜Python精神病算法和自我认知异类数学模型

📜Python蜂窝通信Wi-Fi和GPU变分推理及暴力哈希加密协议图消息算法

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python和C++二分图判断算法

二分图是一种图,其顶点可以分为两个独立的集合 U 和 V,并且每条边 (u, v) 要么连接从 U 到 V 的顶点,要么连接从 V 到 U 的顶点。换句话说,对于每条边 (u, v),要么 u 属于 U 且 v 属于 V,要么 u 属于 V 且 v 属于 U。我们也可以说没有边连接同一集合的顶点。

图2
图1
1
2
3
4
1
2
3
4
5

如果可以使用两种颜色对图进行着色,使得集合中的顶点用相同的颜色着色,则二分图是可能的。请注意,可以使用两种颜色对偶数环的循环图进行着色。例如,参见下图。

A
B
C
D
E
F

不可能使用两种颜色对具有奇数循环的循环图进行着色。

A
B
C
D
E

检查图是否为二分图的算法:一种方法是在着色问题中使用回溯算法来检查图是否是 2-可着色的。以下是一个简单的算法,用于确定给定图是否是二分图:

  1. 将红色分配给源顶点(放入 U 组中)。
  2. 将所有邻居涂上蓝色(放入集合 V 中)。
  3. 将所有邻居的邻居涂成红色(放入 U 组)。
  4. 这样,为所有顶点分配颜色,使其满足 m 路着色问题(其中 m = 2)的所有约束。
  5. 在分配颜色时,如果我们找到与当前顶点颜色相同的邻居,则该图不能用 2 个顶点着色(或者图不是二分图)

C++代码算法:

#include <iostream>
#include <queue>
#define V 4

using namespace std;
bool isBipartite(int G[][V], int src)
{

	int colorArr[V];
	for (int i = 0; i < V; ++i)
		colorArr[i] = -1;

	colorArr[src] = 1;
	queue <int> q;
	q.push(src);

	while (!q.empty())
	{
		int u = q.front();
		q.pop();

		if (G[u][u] == 1)
		return false; 

		for (int v = 0; v < V; ++v)
		{

			if (G[u][v] && colorArr[v] == -1)
			{
				colorArr[v] = 1 - colorArr[u];
				q.push(v);
			}

			else if (G[u][v] && colorArr[v] == colorArr[u])
				return false;
		}
	}

	return true;
}

int main()
{
	int G[][V] = {{0, 1, 0, 1},
		{1, 0, 1, 0},
		{0, 1, 0, 1},
		{1, 0, 1, 0}
	};

	isBipartite(G, 0) ? cout << "Yes" : cout << "No";
	return 0;
}

Python算法:

class Graph():

	def __init__(self, V):
		self.V = V
		self.graph = [[0 for column in range(V)] \
								for row in range(V)]

	def isBipartite(self, src):
		colorArr = [-1] * self.V
		colorArr[src] = 1
		queue = []
		queue.append(src)
		while queue:

			u = queue.pop()
			if self.graph[u][u] == 1:
				return False;

			for v in range(self.V):
				if self.graph[u][v] == 1 and colorArr[v] == -1:
					colorArr[v] = 1 - colorArr[u]
					queue.append(v)
				elif self.graph[u][v] == 1 and colorArr[v] == colorArr[u]:
					return False

		return True
g = Graph(4)
g.graph = [[0, 1, 0, 1],
			[1, 0, 1, 0],
			[0, 1, 0, 1],
			[1, 0, 1, 0]
			]
			
print ("Yes" if g.isBipartite(0) else "No")

上述算法仅在图连通时才有效。在上述代码中,我们始终从源 0 开始,并假设从该源访问顶点。一个重要的观察结果是,没有边的图也是二分图。请注意,二分图条件表示所有边都应从一个集合到另一个集合。我们可以扩展上述代码以处理图不连通的情况。对于所有尚未访问的顶点,重复调用上述方法。

C++算法:

#include <bits/stdc++.h>

using namespace std;

const int V = 4;
bool isBipartiteUtil(int G[][V], int src, int colorArr[])
{
	colorArr[src] = 1;
	queue<int> q;
	q.push(src);
	while (!q.empty()) {

		int u = q.front();
		q.pop();
		if (G[u][u] == 1)
			return false;

		for (int v = 0; v < V; ++v) {

			if (G[u][v] && colorArr[v] == -1) {

				colorArr[v] = 1 - colorArr[u];
				q.push(v);
			}

			else if (G[u][v] && colorArr[v] == colorArr[u])
				return false;
		}
	}

	return true;
}

bool isBipartite(int G[][V])
{

	int colorArr[V];
	for (int i = 0; i < V; ++i)
		colorArr[i] = -1;

	for (int i = 0; i < V; i++)
		if (colorArr[i] == -1)
			if (isBipartiteUtil(G, i, colorArr) == false)
				return false;

	return true;
}

int main()
{
	int G[][V] = { { 0, 1, 0, 1 },
				{ 1, 0, 1, 0 },
				{ 0, 1, 0, 1 },
				{ 1, 0, 1, 0 } };

	isBipartite(G) ? cout << "Yes" : cout << "No";
	return 0;
}

Python算法:

class Graph():

	def __init__(self, V):
		self.V = V
		self.graph = [[0 for column in range(V)]
					for row in range(V)]

		self.colorArr = [-1 for i in range(self.V)]

	def isBipartiteUtil(self, src):

		queue = []
		queue.append(src)
		while queue:

			u = queue.pop()
			if self.graph[u][u] == 1:
				return False

			for v in range(self.V):
				if (self.graph[u][v] == 1 and
						self.colorArr[v] == -1):
					self.colorArr[v] = 1 - self.colorArr[u]
					queue.append(v)
				elif (self.graph[u][v] == 1 and
					self.colorArr[v] == self.colorArr[u]):
					return False
		return True

	def isBipartite(self):
		self.colorArr = [-1 for i in range(self.V)]
		for i in range(self.V):
			if self.colorArr[i] == -1:
				if not self.isBipartiteUtil(i):
					return False
		return True
g = Graph(4)
g.graph = [[0, 1, 0, 1],
		[1, 0, 1, 0],
		[0, 1, 0, 1],
		[1, 0, 1, 0]]

print ("Yes" if g.isBipartite() else "No")

👉参阅、更新:计算思维 | 亚图跨际

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值