Опубликовано 03.01.2018 по предмету Информатика от Гость

В некотором государстве есть n городов. Между некоторыми парами городов проложены дороги. Каждая из дорог имеет длину 100 км. Известно, что из любого города можно добраться по последовательности дорог в любой другой, причём единственным способом.
а) Что можно сказать о числе дорог в таком государстве?
б) Пусть города занумерованы числами от 1 до n, а каждая дорога задаётся двумя числами – номерами городов, которые она соединяет. Напишите на любом известном вам языке программирования программу, которая находит два города, кратчайший путь между которыми имеет наибольшую возможную длину среди всех кратчайших путей в данном государстве.
в) Оцените время работы вашей программы в зависимости от n. Оценку количества действий укажите в комментариях к коду. Может ли существовать алгоритм, который решает задачу оптимальнее? Если да, то постарайтесь его найти.
Ответы на вопросы о количестве действий и существовании оптимального алгоритма напишите в комментариях внутри вашей программы.

Ответ оставил Гость

1) количество дорог строго n-1
2) алгоритм простой
    1. Выбираем любую вершину и при помощи волнового алгоритма ищем наиболее удаленную вершину А
    2. Из вершины А волновым алгоритмом ищем наиболее удаленную вершину Б
    3. А-Б - максимальный путь
3) волновой алгоритм в дереве выполняется за O(n), в нашем случае получаем O(C*n) что равно O(n)

саму программу на Python набросаю чуть позже
кстати Alviko прав, все эти оценки производительности в школе не дают

Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы