矩阵(二维数组)的性质在算法求解中的应用

本文所说的矩阵(matrix),其实在编程实现时,往往以二维数组的形式出现。

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值