6 / 6 / 5
Регистрация: 15.05.2014
Сообщений: 104
|
|
1 | |
Что такое приближенный алгоритм и в чем отличие от эвристического или жадного?11.08.2015, 19:21. Показов 9743. Ответов 6
Метки нет (Все метки)
Правильно ли я понимаю, что приближенный алгоритм - это алгоритм, который всегда дает почти точное решение и его точность доказана, в то время как эвристический - это тоже приближенный, но его точность не доказана и в некоторых случаях могут получаться совершенно не приближенные результаты или даже не оптимальные? В то время как жадный выбирает локально оптимальные решения, и так же может давать точный, приближенный или даже самый не оптимальный результат?
0
|
11.08.2015, 19:21 | |
Ответы с готовыми решениями:
6
Нюансы использования оператора запятая или что такое UB и с чем его едят DrawingVisual, что это такое и с чем его едят, или как перерисовать Что такое TableAdapterManager и TableAdapter и в чём их отличие? Что такое Container и OWNER и в чём отличие от PARENT |
2769 / 1817 / 200
Регистрация: 05.06.2011
Сообщений: 5,264
|
|
11.08.2015, 19:40 | 2 |
Про жадный — приблизительно так, если я сам понимаю. Насчёт точного, приближённого и т.п. — не совсем. Насколько я знаю, есть задачи, решаемые жадным алгоритмом и не решаемые. Встречал термин только в отношении комбинаторики, там нет приближённых результатов. Либо даёт ответ, либо не даёт.
Эвристический, то, что встречал — неполный, что ли. Вот, например, задача о рюкзаке. Решается полным перебором, но можно ускорить некоторыми приёмами. Иногда условия выполняются и приём работает (ускоряет, в данном случае, перебор). Иногда условия не выполняются и приём неприменим. Приближённый алгоритм — как термин не встречал. Есть алгоритмы, находящие приближение к результату, но приближёнными их не называют.
1
|
12.08.2015, 18:04 | 3 |
Сообщение было отмечено kquick как решение
Решение
iifat, я понял, о чём спрашивается в теме!
Под приближенными алгоритмами (решениями) понимаются такие алгоритмы для решения комбинаторных задач, которые возвращают вариант, отличающийся от оптимального не более, чем на определённую погрешность. Например, задачу коммивояжера можно заменить такой: «найти какой-либо гамильтонов цикл, длина которого отличается от длины оптимального гамильтонового цикла не более, чем на m%». Если для данной задачи найдётся алгоритм, который может решить задачу с указанной точностью за меншее время или с лучшей сложностью решения, чем любой алгоритм, находящий точное решение (т.е. m=0), то такой алгоритм будет приближенным. Кстати, ты точно не встречал подобных алгоритмов?
1
|
2769 / 1817 / 200
Регистрация: 05.06.2011
Сообщений: 5,264
|
|
12.08.2015, 19:28 | 4 |
Подобных — наверняка встречал. Один даже писал. Разбивал .zip-файл на дискеты, многотомных архивов тогда ещё не было. Вот названия «приближённые алгоритмы» в этом смысле не помню. Хотя и не возражаю — название вполне подходит
1
|
6 / 6 / 5
Регистрация: 15.05.2014
Сообщений: 104
|
|
14.08.2015, 12:44 [ТС] | 5 |
Что тогда насчет эвристических и жадных? Чем они отличаются?
Эврестический: - нет строгого обоснования (не доказан) - приемлемые результаты в большинстве случаев (но может вобще самый плохой результат) Жадный: - нет строго обоснования (не доказан, а может быть и доказан в отличии от эвристического) - приемлемые результаты в большинстве случаев (самый неоптимальный быть не может, поскольку принимаются локально оптимальные решения) Правильно ? Если быть более конкретным. Вот задача коммивояжера. Взято из википедии: "Все эффективные (сокращающие полный перебор) методы решения задачи коммивояжёра — методы эвристические. В большинстве эвристических методов находится не самый эффективный маршрут, а приближённое решение." Тогда получается, что всякий жадный алгоритм - это частный случай эвристического?
0
|
2769 / 1817 / 200
Регистрация: 05.06.2011
Сообщений: 5,264
|
|
14.08.2015, 13:26 | 6 |
Не, вот тут куда-то не туда тебя понесло.
Жадный алгоритм — вполне себе доказан. Собственно, «жадный алгоритм» — это не конкретный алгортм, жадность это свойство алгоритма (принимать оптимальные локальные решения на каждом этапе). Некоторые задачи решаются жадным алгоритмом, некоторые нет. И то, и другое надо доказывать. Задача коммивояжера относится к нерешаемым этим алгоритмом. Как-то жестоко Вот, посмотри Википедию, например. Совсем уж недоказанный алгоритм и применять-то страшно. Нет полного доказательства. Ну вот, к примеру, задача о рюкзаке. Решаем полным перебором; а теперь добавим в начало проверку — соберём всё и посмотрим, не поместится ли в рюкзак. По-моему, этот приём заслуживает названия эвристического. Понятно, что если сработает, то здорово ускорит работу алгоритма; но вот оценить вероятность — безнадёга. Всё, как понимаю, предельно доказано, но вот оценить долю решаемых задач невозможно.
1
|
Модератор
3077 / 2226 / 462
Регистрация: 26.03.2015
Сообщений: 8,634
|
|
14.08.2015, 20:42 | 7 |
Сообщение было отмечено kquick как решение
Решение
Между жадным, эвристическим и приближенным алгоритмом нет взаимно однозначного соответствия.
Жадный алгоритм - это когда мы выбираем оптимальное решение на каждом шаге. В зависимости от задачи жадный алгоритм может находить лучшее решение или не находить. Пример 1. Есть N предметов разного веса и разной стоимости. Нужно выбрать n предметов так, чтобы суммарная стоимость была как можно больше. Жадный алгоритм (на каждом шаге выбираем самый дорогой предмет) даёт оптимальное решение. Пример 2. Есть N предметов разного веса и разной стоимость. Нужно выбрать предметы общим весом не больше G так, чтобы суммарная стоимость была как можно больше. Жадный алгоритм (на каждом шаге выбираем предмет с самой большой удельной - цена/вес - стоимостью) не даёт оптимальное решение. Более того, получаемое решение может во сколько угодно раз отличаться от оптимального. (Суммарный вес X, предметы: {вес 1, цена 1}, {вес X, цена X/2}. Жадным алгоритмом получаем суммарную цену 1.) Приближенный алгоритм гарантирует, что найденное решение будет отличаться от оптимального не более, чем на сколько-то процентов. Приближенный алгоритм может быть жадным, а может не быть. Эвристический алгоритм использует некую эвристическую функцию для оценки промежуточных результатов. Эвристический алгоритм может быть жадным, а может не быть. Эвристический алгоритм может давать точное решение, а может не давать. Эвристический алгоритм может давать приближенное решение заданной точностью, а может не давать. Пример 3. Найти кратчайший путь между двумя точками (на графе). Жадный алгоритм (на каждом шаге выбираем узел, который ближе всего к цели). Жадный эвристический алгоритм (на каждом шаге выбираем узел так, чтобы минимизировать эвристическую функцию). Пусть, например, граф состоит из 4х точек S, A, B, F и 4х рёбер: [SA] = 1, [SB] = 100, [AF] = 5, [BF] = 1. Предложенный жадный алгоритм на первом шаге выбирет точку B, так как она ближе к цели. Итоговый путь 101. Если в качестве эвристики взять пройденный путь + расстояние по прямой до цели, то жадный эвристический алгоритм выберет на первом шаге точку A, так как эвристика (1+5 < 100 + 1). Можно использовать поиск в ширину и найти точное решение. При этом можно использовать описанную выше эвристическую функцию для задания приоритета на каждом шаге. У нас будет эвристический алгоритм, находящий точное решение, но работающий быстрее, чем просто поиск в ширину.
1
|
14.08.2015, 20:42 | |
14.08.2015, 20:42 | |
Помогаю со студенческими работами здесь
7
В чем отличие и что лучше изучать??? Core i5-3470 или Xeon L5410: в чем отличие Как такое проделать с мемо? или что подходит под такое? Приближенный алгоритм. Грузовики и камни Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|