Скачиваний:
26
Добавлен:
05.01.2021
Размер:
1 Кб
Скачать
function[m_min,range_station]=FB(m_inf)%реализация алгоритма его величества Форда-Беллмана
    m_min=zeros(12); %задаём матрицу нулей 12*12
    m_min(2:12,:) = inf;	%со 2-ой строки по 12-ую записываем бесконечности
    %алгоритм Форда-Бэллмана
    for i = 2 : 12 	
        for j = 2 : 12             
            for k = 1 : 12
                if m_inf(k, j)~=0
                    if m_min(j, i-1) > m_min(k, i - 1) + m_inf(j, k) && m_min(j,i) > m_min(k,i-1)+m_inf(j,k)
                        m_min(j, i) = m_min(k, i - 1) + m_inf(j, k);
                    end
                    if m_min(j,i)==inf
                        m_min(j,i)=m_min(j,i-1);
                    end
                end
            end
        end
    end
l = m_min(12,12);%полученную ранее матрицу записываем в матрицу "l"
    range_station = 12; %число станций 
    m = 12; %число вершин графа 
    while(l) %пока "l" не изменится
        for i = 1:12
            if (m_inf(i, m)~=0) && (l - m_inf(i, m) == m_min(i, 12))
                l = l - m_inf(i, m);
                m = i;
                range_station = [m, range_station];%формируем последовательность станций
            end
        end
    end

end
Соседние файлы в папке курсач по ФБ (подходит под все варианты)