Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2011, 10:02   #1
jack36
Новичок
Джуниор
 
Регистрация: 12.12.2011
Сообщений: 1
Печаль программа на делфи с графами

Помогите пожалуйста написать такую прогу, попытался разобраться с деревом и графами, но ни чего не получилось

ссылка на полный документ с изображениями (если нужно):
www.jack36.ru/files/Kursovaya.doc


Код HTML:
Лабораторная работа.
Пусть имеются 6 задач, их частичная упорядоченность определена графом G,
а также заданы времена решения (веса вершин) – рис. 1. Требуется найти
расписание выполнения этих задач на двух процессорах такое, чтобы время
решения этого набора задач было минимальным.
 
Рис. 1. Граф частичной упорядоченности задач.
Сначала без учета реально доступного количества процессоров составим
временную диаграмму решения всей совокупности задач – такую, при которой
каждая из задач решается как можно раньше, и определим загрузку
 неограниченного числа процессоров:
 
Рис. 2. Временная диаграмма решения совокупности задач.
Здесь удалось работы “уложить“ в 3 слоя, что соответствует загрузке
максимально трех процессоров. Однако у нас имеется только два
процессора, поэтому необходимо найти способ учета данного ограничения.
Предлагаемый алгоритм построения расписания основан на последовательном
введении в исходный граф дополнительных дуг (т.е. введении различных
вариантов дополнительной упорядоченности задач). Учет вновь введенных
связей между задачами должен позволить устранить ситуации, когда, согласно 
этой схеме, в некоторые моменты времени требуется наличие более чем двух 
процессоров.
Опишем такой алгоритм.
1). Находим первый момент времени, при котором нам требуется более двух 
процессоров: при t=1 это количество F(1)=3. Выделим образующие F задачи: 
{2, 3, 4}. Известно, что для “сглаживания“ плотности загрузки F надо ввести 
специальным образом одну из возможных комбинаций по F(t)–n связей. В данном 
случае это комбинации из одной связи: 2*3, 2*4, 3*2, 3*4, 4*2, 4*3 (связь I*J 
означает, что задача J может начаться только после завершения задачи I ).
Первая из них – связь 2*3.
 
Рис. 3. Временная диаграмма.
Обратим внимание, что связи надо вводить так, чтобы изменившаяся длина 
расписания была меньше некоторой уже полученной ранее длины Tопт. Начиная 
процесс, т.е. не имея еще никаких оценок, можно положить Tопт =*.
2). Находим следующий момент времени, t=4, такой, что F(4)=3. Выделяем образующие  
задачи {3, 5, 6}. Комбинации (по одной) связей, которые следует 
испытывать: 3*5, 3*6, 5*3, 5*6, 6*3, 6*5.
Введем первую из них, 3*5:
 
Рис. 4. Временная диаграмма.
3). Мы видим, что нет такого момента времени t, в который выполнялось бы 
неравенство F(t)>2. Значит, нами получено допустимое расписание 
выполнения задач на двух процессорах. Его длина Tопт=8. Но нам надо 
получить минимальное расписание, т.е. необходимо продолжить перебор 
в поисках более короткого расписания. Тогда на последнем шаге испытываем 
новую комбинацию связей, 3*6:
 
Рис. 5. Временная диаграмма.
Введение этой связи проводит к увеличению длины расписания сверх 
уже найденной Tопт =8. Отвергаем эту связь.
4). Испытываем и отвергаем связи 5*3, 5*6, т.к. они не приводит  
к получению Tопт <8, а вот связь 6*3 приводит к успеху:
 
Рис. 6. Временная диаграмма.
Мы получили расписание с длиной, меньшей ранее полученной, Tопт=7. 
Такую же длину расписания (т.е. не уменьшает ее) дает и связь 6*5.
5). Перебрав все эти связи, мы обязаны вернуться на предыдущий шаг 
(см. пункт 1), проверив, не порождают ли другие возможные комбинации 
связей на нем лучшее расписание. Связи 2*4 и 3*2 (рис. 7) приводят 
к оценке Tопт=8.
 
Рис. 7. Временная диаграмма.
6). Испытываем связь 3*4:
 
Рис. 8. Временная диаграмма.
Получили оценку расписания, равную полученной ранее.
7). Связи 4*2 и 4*3 дают оценку длины расписания, превышающую 
ранее полученную.
Перебор закончен. Минимальная длина расписания, т.е. минимальное 
время, за который можно решить данный набор задач на двух 
процессорах, Tопт=7.
Задание
Написать программу (на С, С++, Паскале или др. языке), реализующую 
этот алгоритм.
Исходные данные: произвольный граф (не очень большой, порядка 
10 вершин), веса каждой из задач.
Результат:
Оптимальное расписание (если оно не единственное, то любое).
Требования:
1. Визуализация процесса решения (приблизительно так, как на 
рисунках); прямоугольники, соответствующие разным задачам, 
выделять цветом; указывать номера задач.
2. Возможность как пошагового прослеживания процесса решения, 
так и выдачи только оптимального расписания.
3. Удобство и быстрота ввода исходных данных (в частности, 
возможность частичного изменения исходных данных).
Максимальная длина расписания должна быть такой, чтобы 
изображение помещалось на экране.

Последний раз редактировалось jack36; 13.12.2011 в 00:05.
jack36 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работы с графами Faerq Помощь студентам 0 22.05.2011 15:45
Затруднения с графами андрей3467 Помощь студентам 2 17.05.2011 00:55
задание с графами на java ArniLand Фриланс 0 03.04.2011 12:57
Алгоритм работы с графами pro100saniok Помощь студентам 2 16.12.2010 07:05