Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
aralab28_3.doc
Скачиваний:
1
Добавлен:
22.11.2018
Размер:
695.81 Кб
Скачать

Задания для лабораторной работы № 2

Предлагается попарное сравнение различных алгоритмов нахождения минимального по весу остовного дерева в графе G = (V, E), имеющего n вершин и m ребер.

Варианты выбора пары алгоритмов A и B для сравнения:

Вариант 1

  • А  алгоритм Борувки,

  • В  алгоритм Краскала;

Вариант 2

  • А  алгоритм Борувки,

  • В  алгоритм Прима;

Вариант 3

  • А  алгоритм Прима,

  • В  алгоритм Краскала;

Вариант 4

  • А  алгоритм Борувки,

  • В  Round Robin алгоритм.

Задание.

  1. Написать программу, реализующую алгоритм А и алгоритм В.

  2. Написать программу, реализующую алгоритм А и алгоритм В, для проведения экспериментов, в которых можно выбирать:

  • число n вершин и число m ребер графа,

  • натуральные числа q и r, являющиеся соответственно нижней и верхней границей для весов ребер графа.

Выходом данной программы должно быть время работы ТА алгоритма А и время работы ТВ алгоритма В в секундах.

  1. Провести эксперименты на основе следующих данных:

    1.  n = 1, … ,104+1 с шагом 100, q = 1, r =106, количество ребер: а) m ≈ n2/10, б) m ≈ n2 (нарисовать графики функций TА(n) и ТВ(n) для обоих случаев);

    2.  n = 101, … ,104+1 с шагом 100, q = 1, r  = 106, количество ребер: а) m ≈ 100n, б) m ≈ 1000n (нарисовать графики функций TА(n) и ТВ(n) для обоих случаев);

    3.  n = 104+1, m = 0, … ,107 с шагом 105, q = 1, r = 106 (нарисовать графики функций TА(m) и ТВ(m) );

    4.  n = 104+1, q = 1, r = 1, … ,200 с шагом 1, количество ребер: а) m ≈ n2, б) m ≈ 1000n (нарисовать графики функций TА(r) и ТВ(r) для обоих случаев).

  2. Сформулировать и обосновать вывод о том, в каких случаях целесообразно применять алгоритм А, а в каких  алгоритм В.

3.3. Создание и использование словаря Постановка задачи

Для множества слов S={S1, S2, … ,Sn}, имеющих соответственно толкования T={T1, T2, … ,Tn }, создать словарь и для последовательности слов P=(P1, P2, … ,Pk) с буквами из алфавита A={a1, a2, … ,am} определить для каждого слова Pi из P по словарю, принадлежит ли оно множеству S, и если принадлежит, то найти его толкование TPi (см. [1], [3]).

Решение задачи создания и использования словаря

Под словарем для множества слов с толкованиями подразумевается структура данных, которая позволяет находить слова, определяя их толкования, и поддерживает операцию вставки слов с соответствующими им толкованиями.

Таким образом, словарь SL должен представлять собой структуру данных с реализованными на ней операциями НАЙТИ(u,SL,t,b) и ВСТАВИТЬ(u,t,SL). Здесь операция НАЙТИ(u,SL,t,b) осуществляет поиск слова u в словаре SL и возвращает, если слово найдено, его толкование t и значение b= true , в противном случае возвращается значение b = false. Операция ВСТАВИТЬ(u,t,SL) пополняет словарь SL новым словом u, имеющим толкование t, если этого слова в словаре не было, и меняет толкование слова u в словаре SL на t, если это слово в словаре уже было.

Задача создания словаря решается следующей процедурой:

procedure СОЗДАНИЕ_СЛОВАРЯ(S; T; n; var SL);

begin

for i:= 1 to n do ВСТАВИТЬ(S[i],T[i],SL)

end;

В задаче создания и использования словаря требуется создать словарь и для каждого слова P[i] из P определить по созданному словарю, принадлежит ли оно множеству S, если принадлежит, то найти его толкование TPi и положить bP[i]=true, если же не принадлежит, то положить bP[i]=false.

procedure СОЗДАНИЕ_И_ИСПОЛЬЗОВАНИЕ_СЛОВАРЯ(S; T; n; P; k; var SL; var TP; var bP);

begin

СОЗДАНИЕ_СЛОВАРЯ(S; T; n; SL);

for i:= 1 to k do НАЙТИ(P[i],SL,TP[i],bP[i]);

end;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]