У меня есть несколько состояний, которые связаны вероятностями перехода (встроенными в матрицу перехода, как в цепи Маркова). Я хочу обобщить эту матрицу перехода, рассматривая только вероятности, достаточно высокие, чтобы они позволяли перейти из одного состояния (~узла) в другое (первое и последнее в моей матрице перехода). Порог, чтобы, если я рассматриваю только более высокие вероятности, моя матрица перехода никогда не позволяла переходить от первого к последнему состоянию (или узлам).
Два вопроса:
Существуют ли некоторые известные библиотеки (предпочтительно язык python), которые реализуют такой метод? Мой наивный/эмпирический/прототипный подход был бы одним циклом, который уменьшает значение порога, а затем проверяет, могу ли я пройти через матрицу перехода из первого состояния в последнее (своего рода лучший алгоритм пути в матрице расстояний?). Но для этого может потребоваться очень большое время вычислений?
Example 1:
DistMatrix = [[ 'a', 'b', 'c', 'd'],
['a', 0, 0.3, 0.4, 0.1],
['b', 0.3, 0, 0.9, 0.2],
['c', 0.4, 0.9, 0, 0.7],
['d', 0.1, 0.2, 0.7, 0]]
states are a,b,c,d. I want to find the value (threshold) that allow to go from a to d (no matter if other states are walked)
Naive approach:
- first loop: threshold 0.9, I get rid of lesser probabilities: I can only connect c and b
- second loop: threshold 0.7, I get rid of lesser probabilities: I can only connect c, b, d
- third loop: threshold 0.4, I get rid of lesser probabilities: I can connect a,c, b, d: here is my threshold: 0.4
--> должно быть невероятно сложно, поскольку моя матрица перехода имеет много тысяч состояний? --> Алгоритм предложить?
Example 2:
DistMatrix =
[ 'a', 'b', 'c', 'd'],
['a', 0, 0.3, 0.4, 0.7],
['b', 0.3, 0, 0.9, 0.2],
['c', 0.4, 0.9, 0, 0.1],
['d', 0.7, 0.2, 0.1, 0] ]
states are a,b,c,d. I want to find the value (threshold) that allow to go from a to d (no matter if other states are walked)
Naive approach:
-first loop: threshold 0.9, I get rid of all others: I can only connect c and b
-second loop: threshold 0.7, I get rid of lesser connexion: I connect b and c, and a and d but because a and d are connected, I have my threshold!