C++ 节点间存储成本
我正在使用统一成本搜索制作一个迷宫解算器,基本上我想做的是在迷宫中的房间之间存储随机成本 房间的数据结构(命名单元): 迷宫[1][1]的邻域向量中包含:C++ 节点间存储成本,c++,search,vector,matrix,nodes,C++,Search,Vector,Matrix,Nodes,我正在使用统一成本搜索制作一个迷宫解算器,基本上我想做的是在迷宫中的房间之间存储随机成本 房间的数据结构(命名单元): 迷宫[1][1]的邻域向量中包含: neighbors[0] = *maze[1][2]; neighbors[1] = *maze[2][1]; 现在的成本向量是: cost[0] = 5; cost[1] = 10; 但这种做法产生了很多问题 我的想法是,我需要一个成本矩阵,它将一个节点与另一个节点匹配,并将成本存储在矩阵中,如下所示: 0 1 2 0[0][
neighbors[0] = *maze[1][2];
neighbors[1] = *maze[2][1];
现在的成本向量是:
cost[0] = 5;
cost[1] = 10;
但这种做法产生了很多问题
我的想法是,我需要一个成本矩阵,它将一个节点与另一个节点匹配,并将成本存储在矩阵中,如下所示:
0 1 2
0[0][2][4]
1[2][0][6]
2[4][6][0]
但是为了做到这一点,我如何让我的矩阵知道哪个细胞是哪个细胞?如何代替0和1,让它知道它是[0][0][0][1][0][2]等
我需要利用3D向量来做类似的事情吗?如果我这样做了,我宁愿避免使用它,因为我对3D矢量没有经验。您不能使用自定义对象链接到另一个房间吗?例如:
struct Cell;
struct CellLink {
const Cell *cell;
const int weight;
..
};
struct Cell {
int row;
int column;
vector<CellLink> neighbors;
State state;
};
struct单元;
结构单元链接{
常量单元格*单元格;
常量整数权重;
..
};
结构单元{
int行;
int列;
向量邻域;
国家;
};
这将使成本和电池无需担心。唯一的缺点是,您会将每个成本存储两次(假设它是对称的),但在许多其他方法(包括矩阵)中也是如此。看起来它应该可以工作,让我试试,我会给您回复的。
0 1 2
0[0][2][4]
1[2][0][6]
2[4][6][0]
struct Cell;
struct CellLink {
const Cell *cell;
const int weight;
..
};
struct Cell {
int row;
int column;
vector<CellLink> neighbors;
State state;
};