Другие языки программирования и технологии

Вопрос про алгоритмы

Алгоритмы разрабатывают ведь программисты и ученные?

Как часто приходится придумывать собственные алгоритмы для решения уникальной задачи, для которой нет универсального решения? Например есть алгоритмы которые были еще открыты во второй половине 20 века, и чтобы решить какую-то очевидно известную задачу, для этого особо не нужно придумывать велосипед, можно воспользоваться одним из известных алгоритмов и реализовать его.
Гусейн Аварец
Гусейн Аварец
4 040
Тут надо понимать, что решение прикладных программистских задач крайне редко сводится к научным изысканиям. Схема принятия решения обычно такая:
1) Дёрнуть готовую функцию из уже подключенной в проект библиотеки.
2) Подключить в проект новую библиотеку, в которой реализация алгоритма уже есть и отлажена.
3) Скопировать реализацию алгоритма из внешнего источника в код проекта, подогнав по свои реалии.
4) Реализовать в проекте уже известный алгоритм или комбинацию известных алгоритмов.
Варианты перечислены в том порядке, в котором они рассматриваются, т.к. каждый следующий стоит дороже предыдущего. Вместо библиотеки может быть отдельно развёртываемый сервис или что-то ещё, не суть.
И только когда всё остальное не сработало, и если при этом хватает компетенций:
5) Надеваем белые халаты и строим из себя учёных.

Могу сказать, что по 5-му варианту мне приходилось работать всего раза три за всю профессиональную жизнь, и все эти разы - несанкционированно (потому что всё равно никто бы не согласовал эти исследовательские работы). Но результат получался. А обычно всё же стараюсь делать по 3-му или 4-му варианту. Ну, а для 1-2 джуны есть.
Анжела Пеннер
Анжела Пеннер
54 053
Лучший ответ
Чаще не разрабатывать "с нуля" приходится, а дорабатывать готовые под задачу. Это касается сложных алгоритмов, всякая простота просто так и пишется
Alisaleh Aliyev
Alisaleh Aliyev
59 423
алгоритмы "разрабатывают" в повседневной жизни ...

жизнь без своих алгоритмов - рутина

интерес ей придаёт разумный алгоритм и его исполнение
Да, алгоритмы разрабатываются программистами и учеными. Однако, ученые могут разрабатывать новые алгоритмы в области математики или физики, а программисты могут адаптировать эти алгоритмы для решения конкретных задач.

Да, часто приходится придумывать свои собственные алгоритмы для уникальных задач. Например, если задача уже решена с помощью известных алгоритмов, но требуется более эффективное решение, то программист может разработать новый алгоритм, который будет более быстрым и эффективным.
__V.i.p __
__V.i.p __
40 871
Да, алгоритмы разрабатывают программисты и ученые. Они используются для решения различных задач, и могут быть как универсальными, так и специфическими для конкретной проблемы.

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

Существует множество алгоритмов, которые были разработаны во второй половине 20-го века и до сих пор широко используются. Однако наука и технологии постоянно развиваются, и появляются новые задачи, которые требуют новых алгоритмов. Исследователи из Массачусетского технологического института провели исследование, в котором показали, как быстро улучшаются алгоритмы. Они проанализировали данные из 57 учебников и более чем 1110 научных статей, чтобы проследить историю улучшения алгоритмов. В результате они обнаружили, что в среднем в каждой "семье алгоритмов" (набор алгоритмов для решения одной и той же проблемы) было около восьми алгоритмов, из которых пара улучшила свою эффективность. Таким образом, хотя многие существующие алгоритмы по-прежнему широко используются, ученые и программисты продолжают разрабатывать новые алгоритмы для решения новых проблем.
у меня буквально на днях была проблема. Есть большой круг и в него нужно в случайным образом вписать маленькие круги, но так чтобы плотность была относительно равномерная. При этом количество маленьких кругов заранее не известно, оно по сути рандомное.
Математических формул я не нашел, есть упаковка кругов, но там для постоянного количества. Пришлось искать свое решение..
АС
Андрей Суров
19 664
Анжела Пеннер Берём первый круг, ставим в произвольное место большого круга. Второй круг ставим на максимальном удалении от первого. Третий ставим на максимальном удалении от первых двух (это будет на прямой, перпендикулярной соединяющему их отрезку). Четвёртый ставим на максимальном удалении от первых трёх. И так далее. Это - простой алгоритм.
Немного помудрив, можно сделать на префиксных деревьях, отведя каждой ветви свой участок круга. Корневой узел - весь круг. Дочерние узлы - k частей одинаковой площади, например, секторов. Новый малый круг идёт по пути минимальной глубины, занимает незанятый лист и ставится точно в центр соответствующего ему участка. Когда все листья на данной глубине заняты, порождаем следующий уровень (деля площади) и перемещаем листья на него.