Ответы пользователя по тегу Алгоритмы
  • Лучший интерактивный русскоязычный сайт с задачами по JS?

    @dmshar
    чтобы начинающие разработчики однозначно понимали задания. Что посоветуете?
    - тут ответ понятен и однозначен. Посоветую начинающим разработчикам - изучать английский. Тогда ВСЁ будут понимать, точно и однозначно. Кстати, обучающие курсы - отличный, может быть лучший полигон для оттачивания английского. И наоборот - необходимость языка для изучения интересующей темы - отличный стимул в освоении этого самого языка (на отсутствие которого часто жалуются ленивцы).
    Ответ написан
    Комментировать
  • Как написать алгоритм вычисления почти линейного коэффициента поправки показаний сенсора?

    @dmshar
    Если я правильно понял.
    Есть два набора данных X(напряжение), Y( емкость). Понимаем, что Y замерена с некоторой ошибкой.
    Надо найти функцию F(X), такую, чтобы Ф(Ymoд-Y) -- по сути, ошибка между замеренным (Y) и рассчитанным (Yмод) значениями на заданных точках из Х -- была бы в некотором смысле оптимальна (например - минимальна).
    F()- в простейшем случае линейная функция, в более сложных случаях- не обязательно.
    Если это так то имеем классическую задачу построения регрессионной модели. Имея такую модель можно для произвольного х "предсказать" ожидаемое значение y.
    Если-же под Y понимать не сами значения(емкость), а поправки, которые вы вносите на заданных точках Х, то аналогичным образом построенная регрессионная модель будет "предсказывать" поправку, которую необходимо учитывать в произвольной точке x.
    Ответ написан
  • Как разделить список чисел на группы по заданному расстоянию между числами в группе?

    @dmshar
    Никакой "математики" тут нет. Впрочем, как и кластерного анализа. Все тривиально просто. Если все именно так, как вы описали, то вы собственно уже сами и описали ваш алгоритм. Правда опустив первый его шаг - предварительную сортировку.
    Итак:
    1. Сортируем имеющиеся данные.
    2. Начинаем просмотр (не важно с какого -верхнего или нижнего) крайнего члена последовательности и сравниваем следующий элемент последовательности с границей вашего интервала (кстати - в вопросе, наверное, ошибка, и Х у вас не 5, а 0.05). Соответственно, включаем его в первую группу, или "закрываем" первую группу и переходим к формированию второй. Повторяем это действие циклически перебирая последовательно все элементы нашего отсортированного набора.

    Если попытаться обойтись без предварительной сортировки - что в принципе тоже не очень сложно - то надо аккуратно посмотреть, не увеличится-ли при этом вычислительная сложность (на вскидку я в этом не уверен).
    Ответ написан
    3 комментария
  • Алгоритм Finger search?

    @dmshar
    Как это не смогли найти? А где искали?
    Ну вот первые-же ссылки с Гуугла:
    https://en.wikipedia.org/wiki/Finger_search
    https://www.leda-tutorial.org/en/unofficial/ch03s0...
    https://www.freecodecamp.org/news/search-algorithm... - тут даже с кодами примеров.
    Что не так?
    Ответ написан
    1 комментарий
  • Предварительные знания для изучения Анализа Алгоритмов?

    @dmshar
    Для анализа алгоритмов никакой особой подготовки не надо. Достаточно умения логически мыслить и минимальные знания математики уровня даже ниже, чем средняя школа.
    А вот изучать их стоит после того, как твердо освоите хотя-бы один язык программирования, причем освоите практически, а не в чистой теории.
    Вообще-то говоря, основное предназначение это курса не так обучение вас конкретным алгоритмам, и даже не предоставление вам готовых решений определенного круга задач (весьма специфического и ограниченного, кстати), как развитие у вас специального т.н. алгоритмического мышления. А вот оно таки крайне необходимо, если стремитесь стать именно программистом-разработчиком, а не просто кодером.
    Ответ написан
    Комментировать
  • Что прочесть после Грокаем Алгоритмы?

    @dmshar
    Д.Кнут. Искусство программирования.
    Т.Кормен. Алгоритмы. Построение и анализ.
    Дж.Хайнеман. Алгоритмы. Справочник с примерами на С, С++, Java и Python.
    С. Дасгупта. Алгоримты.
    Ответ написан
    Комментировать
  • Winrar алгоритм?

    @dmshar
    Ну, во-первых. Что делает Winrar:
    "Распаковка архивов RAR, а также ARJ, bz2, CAB, GZ, ISO, JAR, LZH, TAR, UUE, XZ, Z, ZIP, ZIPX, 7z,"
    Таким образом, сама программа умеет работать со множеством разных форматов, т.е при распаковке используется множество разных алгоритмов.
    Во-вторых:
    Хотя архивирование в формат RAR — проприетарное, на официальном сайте RarLab доступен защищённый авторскими правами бесплатный исходный код распаковщика UnRAR, лицензия на который разрешает использовать его в любом ПО. Таким образом, сторонние авторы могут создавать программы, способные распаковывать (но не создавать) RAR-архивы - таким образом, если вам задали такую тему работы, то неплохо бы начать с ознакомлением с этим материалом.
    В-третьих: Начиная с версии 5 в WinRAR добавлена поддержка нового архивного формата RAR5,. Отлично. Лезим сюда: https://www.rarlab.com/technote.htm и изучаем внимательно.
    Затем - углубляем наше понимание:
    saanvi.ru/fac.php?filename=txt/soft/rar5.txt
    Наконец, от тех, кто требуем от вас сам алгоритм просим денег на покупку лицензии у авторов. В противном случае обвиняем их в попытке нарушения авторских прав :-)
    Ответ написан
    1 комментарий
  • Поиск всех элементов, как?

    @dmshar
    Вопрос к Senior Pomidor developer - а синьор хоть понимает, что это будут разные алгоритмы в зависимости от того, что у вас в основе - дерево, направленный граф, или вообще - ненаправленный граф? Если понимает, то почему не указал явно? Если нет - тогда зачем ему этот алгоритм? Да и алгоритм вообще?
    Ответ написан
  • Теоретическая часть по программированию?

    @dmshar
    Одно могу сказать точно: если человек, после полутора лет штудирования С++ (кстати, не самое простое, но - по моему мнению - самое верное начало) пишет по сути - "хочу не только кодить, ни и уметь действительно разрабатывать программные системы" - это отлично. Потому как многие - а сегодня, увы, можно сказать и большинство - останавливаються именно не кодинге, и мнят себя при этом курутыми разработчиками.
    Если обратить внимание на то, что автору всего 17 лет - то тем более - респект, так держать!
    Теперь по сути. Вы абсолютно правы, кодирование на любом языке, даже виртуозное, это еще не программирование. Что-бы стать хорошим программистом надо основательно изучить основы Теории Алгоритмов и Структур данных, теорию и практику работы с базами данных, особенности построения распределенных, мобильных и веб-приложений (даже если завтра вы не собираетесь писать под веб или Андроид), понять хотя-бы в общих чертах, как работают сети, и "полирнуться" основами архитектуры современных информационных систем и паттернами проектирования. Ну и надо понимать, для квалифицированного программиста знание одного языка - этого абсолютно недостаточно.
    В каком порядке и по каким источникам двигаться к цели - тут мнений много и разных. Вот несколько ссылок - только не воспринимайте их буквально, подходите творчески. Смотрите, что лучше вам ложиться на душу, что легче "заходит". И не комплексуйте, не бейтесь головой об стену если чего не поймете сразу - потом, через определенное время вернетесь и с высоты приобретенных знаний разберетесь. Главное - не отступать от цели, как в спорте - хоть по часу-два, но каждый день.
    Итак, для начала:
    https://proglib.io/p/cs-learning/
    https://teachyourselfcs.com/
    https://tproger.ru/curriculum/computer-science-ste...
    Удачи!
    P.S. И еще забыл - главное :-). English!!!! Без него в этой профессии сегодня - никак!
    P.P.S. И да - умение самостоятельно Гууглить, искать нужную информацию, отсекать информационный шлак. Ключевое слово - "самостоятельно"! Но это, как бы, вообще на "нулевом" месте.
    Ответ написан
    1 комментарий
  • Как осилить эту статью по компьютерной графике?

    @dmshar
    Возможно для этого цикла статей нужно что-то ещё кроме базового знания языка + базового знания алгоритмов?
    - да все элементарно. Надо получить образование в области ИТ, изучить алгоритмы работы с видоеизображениями, набить руку (получить опыт) в написании хоть каких-то программ - и ву-а-ля, такие статьи будут пониматься на раз.
    А вы думали, что программирование - это почти сантехника? Для понимания откуда течет достаточно четырех классов образования? Пришел с гаечным ключем, устранил протечку, получил кучу денег?
    Ответ написан
    2 комментария
  • Каким методом можно восстановить пропущенные значения в матрице?

    @dmshar
    Если вы не ошиблись, и хотите по 5-10 пикселям восстанавливать изображение 1000х1000, то ответ очевиден - никак.
    А если у вас приерно 5-10% данных пропущенно - и неважно, в изображении, в измерении, или еще в каких данных - то методов восстановления достаточно много и разных.
    Вот несколько ссылок, где описываются варианты, в некоторых - с кодами на Python. Может пригодиться.
    https://gallery.azure.ai/Experiment/Methods-for-ha... https://towardsdatascience.com/the-art-of-cleaning... https://towardsdatascience.com/the-tale-of-missing... https://towardsdatascience.com/working-with-missin... https://www.analyticsvidhya.com/blog/2016/01/guide...
    Ответ написан
  • Как сделать поиск кратчайшего пути на графе по массиву данных?

    @dmshar
    Блин, народ, вы че, уже Google пользоваться разучились или попросту лень*?
    Первая-же ссылка дает богатейшую пищу для мозгов:
    https://habr.com/ru/post/119158/
    А если чуть-чуть напрячь мозг и прочитать то, что написанопо следующим трем-четырем ссылкам, то можно уже будет из себя представлять крутого специалиста.
    Если надо "просто загрузить массив и получить ответ", то таких возможностей довольно много, вот например, один из них:
    https://github.com/pmatiello/python-graph

    А вообще, алгоритм поиска кратчайшего пути в графе изучается на любой специальности, хоть немного связанной с ИТ.
    Ответ написан
    Комментировать
  • Почему в решениях с одинаковой сложностью существенная разница во времени расчета?

    @dmshar
    "Я вам не скажу за всю Одессу" :-), но давайте сравним только with_map(a, l) и traditional_way(a, l). В обоих функциях присутствует цикл (for item in l:) который выполняется примерно за одинаковое время. Но with_map содержит еще и строку
    z = min(map(lambda x: abs(a-x), l)) , которая сначала выполняет map(lambda x: abs(a-x), l) -
    еще один проход по массиву, а в полученном результате ищет min - т.е. пробегает по списку еще раз. Итого - три прохода по массиву, вместо одного в traditional_way. С остальными функциями - примерно та-же история. (Например min(l, key=lambda x: abs(a-x)) - это как минимум два прохода по вашему списку).
    Ответ написан
    3 комментария
  • Алгоритм для рейтинга?

    @dmshar
    А что, кроме количества фотографий (200->500) изменилось, по сравнению с исходным вопросом, на который вы уже получили ответ в виде готового алгоритма?
    Ответ написан
  • Как провести амортизированный анализ биномиальной кучи?

    @dmshar
    Книгу не читал, но верю, что там есть такое задание. Наверное, предполагается, что матерал, который изложен ранее позволяет ученику самостоятельно доказать указанный тезис. Что от нас-то вы хотите? Что-бы мы прочитали эту книгу, попутно изучив вообще-то мало кому нужный Standard ML и доказали что-то за вас?
    P.S. Подсказка. Сложность алгоритма вставки элемента в двоичную кучу не превышает О(logN). Элементарное объяснение см. например, здесь - https://habr.com/ru/post/112222/
    Ответ написан
    1 комментарий
  • Как выбрать данные для классификации случайным лесом?

    @dmshar
    А вы точно изучали теорию?
    Задачи классификации (все, независимо от метода) - на вход принимают РАЗМЕЧЕННЫЙ набор данных по которым строят классификатор, а вашем случае - дерево или лес. Потом полученный классификатор используется для отнесения вновь поступающих данных к одному из классов.
    "Самостоятельное" ( в вашей трактовке) разбиение на классы - это уже другая задача - кластеризаця.
    Ответ написан
    Комментировать
  • Какой алгоритм сжатия данных использовать при архивации лог файлов?

    @dmshar
    Если это реальная задача - то бессмысленно что-то писать самому. Берете готовые, проверяете их на реально имеющихся лог-файлах, сравниваете,делаете выводы, лучший запускаете в продакшн.
    Если это учебная задача - просто научиться реализовывать архиваторы - то изучаете существующие алгоритмы и реализуете любой из них. Все равно, ваша учебная реализация будет хуже, чем имеющиеся коммерческие. Поэтому сравнивать их никто в здравом уме не будет.
    Ответ написан
    Комментировать