Тема: Яким чином представити граф?
Хай. От є деякий неорієнтований граф, його вузли мають номери, а його ребра мають вагу, та можуть мати ще деякі атрибути.
Яким чином його краще представити, за умови, що мені треба буде "ходити" по тих ребрах?
При цьому очевидно, що кожен вузол має знати, в який ще вузол з нього можна перейти.
*********************************************************************************
Я от відразу подумав просто про матрицю, де номери стовбців та строк являються номерами вузлів, і на їх пересіченні буде стояти вага цього переходу. Ну, наприклад, ребро 1-2 важить 50, і от в матриці, mat[1,2]==50.
Але ж перехід з 2 в 1 теж існує, і теж важить 50, то прийшлось би ще додатково заповнювати ту матрицю, і я вважаю це надлишовим + до цього, одна комірка матриці може містити лише якусь одну величину, а нам треба декілька, величин.
************************************************************************************
Далі я подумав, що можна в ті комірки заносити не числа, а класи, котрі будуть містити потрібну кількість полів, які будуть виконувати роль отих атрибутів.
Але чи не краще тоді вже буде створити клас Point, подібний до цього
class Point {
public int MyPoint; //номер точки, котру представляє цей екземпляр класу
public List<int> AvailablePoints; //точки, в котрі можна перейти
}
Але тоді ще треба якось записати вагу кожного переходу, ну що типу перехід 1 -> 2 коштує 50. Але також якось треба розуміти, що перехід з 2 ->1 теж коштує 50.
І тоді весь граф буде собою представляти
class Graph
{
private List<Point> points;
private SomeTable withWeightsOfEdges;
}
Яким чином це краще організувати?