矩阵(二维数组)的性质在算法求解中的应用
2016-09-11 11:32
232 查看
本文所说的矩阵(matrix),其实在编程实现时,往往以二维数组的形式出现。
显然:
dst[i][j]=dst[j][i](表示 i 到 j 的距离)。
且,dst[i][j=0… n-1](也即矩阵的第 i 行,i 到 其他所有城市的距离),
dst[i][j=0… n-1] = dst[i=0…n-1][j=i],第 i 行和 第 i 列的内容完全相同,重点在其实际含义,i 行表示 i 城市到其他所有城市的距离,第 i 列表示的是其他所有城市到 i 的距离,二者是一致;
1. 对称矩阵(二维数组)
在求解旅行商问题时,题干中要求,城市之间彼此互通(两城市之间的道路只有一条)。double dst[100][100]; // 表示城市间的两两距离
显然:
dst[i][j]=dst[j][i](表示 i 到 j 的距离)。
且,dst[i][j=0… n-1](也即矩阵的第 i 行,i 到 其他所有城市的距离),
dst[i][j=0… n-1] = dst[i=0…n-1][j=i],第 i 行和 第 i 列的内容完全相同,重点在其实际含义,i 行表示 i 城市到其他所有城市的距离,第 i 列表示的是其他所有城市到 i 的距离,二者是一致;
2. 根据距离矩阵求关于任一城市的连通的其他城市,以距离排序
int n; double dst[100][100]; vector<int> nearest[100]; // nearest[i][j] 的含义即为距离第 i 个城市,第 j 近的城市是? for (int i = 0; i < n; ++i){ vector<pair<double, int>> order; for (int j = 0; j < n; ++j){ order.push_back(make_pair(dst[i][j], j)); } sort(order.begin(), order.end()); nearest[i].clear(); for (int k = 0; k < order.size(); ++k){ nearest[i].push_back(order[k].second); } }
相关文章推荐
- Trie树的应用,一道算法问题求解 代码实现
- 稀疏线性系统求解算法 之 存储结构(MCRF) 强于二维数组、三元组、行压缩、修正行压缩等
- 矩阵快速幂算法的原理与实践——“使用MATLAB求解大型斐波那契数"
- 栈的应用:利用顺序栈求解迷宫问题(改编自严蔚敏算法)
- 同余定理在算法求解中的应用
- 回溯算法经典应用:迷宫求解
- Gram 矩阵性质及应用
- 第九周项目3--稀疏矩阵的三元组表示的实现及应用--(1)建立稀疏矩阵三元组表示的算法库
- 算法:迷宫求解(栈的应用)-数据结构(8)
- 【刘庆源码共享】稀疏线性系统求解算法MGMRES(m) 之 矩阵类(C++)
- 图的点着色、区间着色问题及其应用(基于贪心思想的DFS回溯法求点着色问题和区间着色算法求解任务调度问题)
- Trie树的应用,一道算法问题求解 问题分析
- 七月算法机器学习笔记2--机器学习中的数学之矩阵分析与应用
- 组合搜索(combinatorial search)在算法求解中的应用
- (算法学习)矩阵乘法及其应用
- Yong式(杨氏)矩阵的概念与性质 ,以及算法实现
- 【数据结构与算法】数组应用1:矩阵乘法(Java实现)
- 稀疏矩阵的三元组表示的实现及应用(2)——采用三元组存储稀疏矩阵,设计两个稀疏矩阵相加的运算算法
- 无向图的割顶和桥的性质 以及双连通分量的求解算法
- 机器学习笔记八 - SVM(Support Vector Machine,支持向量机)的剩余部分。即核技法、软间隔分类器、对SVM求解的序列最小化算法以及SVM的一些应用