У меня есть матрица:Как подмножить матрицу и найти самый короткий путь между всеми узлами в Matlab?
1 2 3 4 5 6
1 0.7431 0.2769 0.0000 0.1869 0.2760 0.9597
2 0.2769 0.0462 0.0344 0.4898 0.6797 0.3404
3 0.0000 0.0344 0.4387 0.4456 0.6551 0.0000
4 0.1869 0.4898 0.4456 0.6463 0.1626 0.2238
5 0.2760 0.6797 0.6551 0.1626 0.1190 0.7513
6 0.9597 0.3404 0.0000 0.2238 0.7513 0.2551
Целые являются индекс. У меня есть хеш-таблица, в которой каждый индекс является человеком. Десятичные числа - это взаимодействия между индексами. Теперь я хочу Подмножество этой матрицы со списком индекса (1, 3, 6), что означает, что я только забочусь взаимодействие между 1, 3 и 6.
Subset:
1 3 6
1 0.7431 0.0000 0.9579
3 0.0000 0.4387 0.0000
6 0.9579 0.0000 0.2551
Там нет взаимодействия между некоторыми людьми, например лицо 1 и 3 или лицо 3 и 6. Но 1 взаимодействует с 2, 4, 5 и 6, которые взаимодействуют с 3. Таким образом, 1 взаимодействует с 3 по 2, 4, 5 или 6. Это может быть 1-> 2-> 4 -> 3 или 1-> 4-> 3 что-то вроде этого. Я хочу найти кратчайший путь для тех двух узлов, у которых нет прямых взаимодействий. Я хочу подмножить исходную матрицу, а затем найти кратчайший путь между узлами, которые не имеют взаимодействия. Извините, ребята, я не прояснился.
Что вы подразумеваете под расстояниями между всеми узлами и кратчайшими путями? – mikkola
Можете ли вы привести небольшой пример? Я с @mikkola, где я не понимаю, чего вы хотите. – rayryeng
Является ли это матрицей весов в полном графике? Если да, то почему у вас есть ненулевые значения по диагонали? – gariepy