Искомая цель формулируется так:1. Определить диаметр графа. 2. Преобразовать граф к новому задаваемому диаметру.Как я понимаю задача сводится к следующему:1. Чтоб найти диаметр графа нужно перебрать все КРАТЧАЙШИЕ пути между всеми парами вершин, а потом среди них выбрать МАКСИМАЛЬНЫЙ. Это и будет диаметр графа.2. А вот с эти пунктом вообще умственный напряг, только полуидеи в голове. Допустим я задаю диаметр меньше исходного. Получается, что нужно найти все пары вершин, расстояние между которыми больше задаваемого диаметра, и добавить новые ребра так, чтобы эти расстояния изменились и не превышали задаваемый диаметр. Причем соединять нужно одну из вершин, у которой диаметр больше нового с вершиной, имеющей максимальную валентность.Возможно, что мыслю не верно, ибо не сталкивался ранее ни с чем подобным.Так вот собственно и просьба помочь с программной реализацией.
|