|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.05.2010, 09:32 | #1 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
Delphi(1й курс) Жадный алгоритм
Здравствуйте гении!
Прошу помочь разобраться с задачкой, а именно объяснить 1)что такое жадный алгоритм, и как его применить в этой задаче? 2)что такое сортировка вставками? 3)Алгоритм выполнения этой задачи(я путаюсь) Я не прошу Вас за меня писать код, прошу просто объяснений, а программу я сам напишу если пойму |
13.05.2010, 09:59 | #2 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
Википедия:
Жадный алгоритм сортировка вставками. Смотрел?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
13.05.2010, 18:03 | #3 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
посмотрел про вставки, понял а про жадный не понял...
|
14.05.2010, 22:59 | #4 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
Объяснит мне кто?
|
15.05.2010, 10:03 | #5 |
Пользователь
Регистрация: 23.07.2009
Сообщений: 66
|
Жадный алгоритм выбирает на каждом этапе оптимальное (для этого этапа) решение. Обычно ему предшествует сортировка. Сейчас я попытаюсь показать пример его использования на классической задаче на жадный алгоритм (по-моему, называется "задача о встречах" или около того):
Условие: У начальника есть список, состоящий из n (1<=n<=1000) встреч. Каждая встреча характеризуется двумя параметрами: временем начала и временем окончания. Время встреч может пересекаться. Начальнику необходимо выбрать максимальное непересекающееся множество встреч. (условие писал по памяти) Решение: сортируем все встречи по концу(т.е. чем раньше встреча заканчивается, тем раньше она у нас будет стоять в массиве). А теперь сам жадник: идем по массиву, и смотрим: если текущая встреча начинается позже чем заканчивается последняя из уже выбранных, то мы ее добавляем в множество выбранных, если начинается раньше (т.е. пересекается) то не добавляем. И так до конца. Т.е. суть жадника тут в том, чтобы брать первую встречу, которую возможно взять. Док-во корректности, думаю, смысла нет приводить, т.к. тебе оно все равно не пригодится . Подробнее можно почитать в книге "Алгоритмы: построение и анализ" Авторы: Кормен, Лейзерсон, Ривест, Штайн. Вообще, в этой книге можно прочитать обо всем, что касается алгоритмизации (на уровне универа) UPD: вот блин, я сначала написал пост, а потом заметил твою задачу. Короче, сложность будет зависеть от сложности сортировки. Если сортировка вставками, то O(n^2+n)=O(n^2)
O(n)
Последний раз редактировалось sabbathist; 15.05.2010 в 10:12. |
15.05.2010, 11:23 | #6 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
Спасибо, дошло Пойду строчить, а то зачет скоро
|
15.05.2010, 11:30 | #7 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
А вот в задаче написано "Специальная процедура должна преобразовывать любой заданный момент времени, в кол-во секунд с начала суток" Это чот ж за чудо процедура? Как заставить делфи понимать что в 14:02:39 50559 секунд? То есть как сделать, чтобы он определял что первое число надо на 3600 умножить+второе на 60+3е число? %)
|
17.05.2010, 18:25 | #8 |
Пользователь
Регистрация: 09.12.2009
Сообщений: 38
|
ответьте((
|
17.05.2010, 19:49 | #9 |
Форумчанин
Регистрация: 04.05.2010
Сообщений: 495
|
Если время храниться в формате TDateTime, то
SecondOfTheDay функция модуля DateUtils Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM того же самого дня. Если нет. То сначала, привести к формату TDateTime функцией EncodeTime;
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |