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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 09:32   #1
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию Delphi(1й курс) Жадный алгоритм

Здравствуйте гении!
Прошу помочь разобраться с задачкой, а именно объяснить
1)что такое жадный алгоритм, и как его применить в этой задаче?
2)что такое сортировка вставками?
3)Алгоритм выполнения этой задачи(я путаюсь)
Я не прошу Вас за меня писать код, прошу просто объяснений, а программу я сам напишу если пойму
Изображения
Тип файла: jpg Задача.jpg (180.4 Кб, 175 просмотров)
Archetype вне форума Ответить с цитированием
Старый 13.05.2010, 09:59   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Википедия:
Жадный алгоритм
сортировка вставками.

Смотрел?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 13.05.2010, 18:03   #3
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию

посмотрел про вставки, понял а про жадный не понял...
Archetype вне форума Ответить с цитированием
Старый 14.05.2010, 22:59   #4
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию

Объяснит мне кто?
Archetype вне форума Ответить с цитированием
Старый 15.05.2010, 10:03   #5
sabbathist
Пользователь
 
Регистрация: 23.07.2009
Сообщений: 66
По умолчанию

Жадный алгоритм выбирает на каждом этапе оптимальное (для этого этапа) решение. Обычно ему предшествует сортировка. Сейчас я попытаюсь показать пример его использования на классической задаче на жадный алгоритм (по-моему, называется "задача о встречах" или около того):

Условие:
У начальника есть список, состоящий из n (1<=n<=1000) встреч. Каждая встреча характеризуется двумя параметрами: временем начала и временем окончания. Время встреч может пересекаться. Начальнику необходимо выбрать максимальное непересекающееся множество встреч.

(условие писал по памяти)

Решение:
сортируем все встречи по концу(т.е. чем раньше встреча заканчивается, тем раньше она у нас будет стоять в массиве).
А теперь сам жадник: идем по массиву, и смотрим: если текущая встреча начинается позже чем заканчивается последняя из уже выбранных, то мы ее добавляем в множество выбранных, если начинается раньше (т.е. пересекается) то не добавляем. И так до конца.

Т.е. суть жадника тут в том, чтобы брать первую встречу, которую возможно взять. Док-во корректности, думаю, смысла нет приводить, т.к. тебе оно все равно не пригодится .
Подробнее можно почитать в книге "Алгоритмы: построение и анализ"
Авторы: Кормен, Лейзерсон, Ривест, Штайн.
Вообще, в этой книге можно прочитать обо всем, что касается алгоритмизации (на уровне универа)



UPD: вот блин, я сначала написал пост, а потом заметил твою задачу. Короче, сложность будет зависеть от сложности сортировки. Если сортировка вставками, то O(n^2+n)=O(n^2)
O(n)

Последний раз редактировалось sabbathist; 15.05.2010 в 10:12.
sabbathist вне форума Ответить с цитированием
Старый 15.05.2010, 11:23   #6
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию

Спасибо, дошло Пойду строчить, а то зачет скоро
Archetype вне форума Ответить с цитированием
Старый 15.05.2010, 11:30   #7
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию

А вот в задаче написано "Специальная процедура должна преобразовывать любой заданный момент времени, в кол-во секунд с начала суток" Это чот ж за чудо процедура? Как заставить делфи понимать что в 14:02:39 50559 секунд? То есть как сделать, чтобы он определял что первое число надо на 3600 умножить+второе на 60+3е число? %)
Archetype вне форума Ответить с цитированием
Старый 17.05.2010, 18:25   #8
Archetype
Пользователь
 
Регистрация: 09.12.2009
Сообщений: 38
По умолчанию

ответьте((
Archetype вне форума Ответить с цитированием
Старый 17.05.2010, 19:49   #9
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Если время храниться в формате TDateTime, то
SecondOfTheDay функция модуля DateUtils Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM того же самого дня.

Если нет. То сначала, привести к формату TDateTime функцией EncodeTime;
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi.Нужен алгоритм. Егор527 Фриланс 10 01.04.2010 07:48
Алгоритм Delphi hohol90 Помощь студентам 2 03.02.2010 17:27
Помогите составить программу на Delphi.. (1 курс) gree Помощь студентам 13 01.11.2008 17:29
Алгоритм перебора (Delphi) Air Помощь студентам 11 20.07.2008 20:28
Помошите найти не жадный DOA 4.0.7, для Delphi 6.0 Lis БД в Delphi 0 06.11.2007 15:09