Задать вопрос
Ответы пользователя по тегу Алгоритмы
  • Зачем нужно знать эффективность\сложность алгоритма?

    mayton2019
    @mayton2019
    Bigdata Engineer
    На алгоритмической сложности стоит вся современная криптография (https-соединения в браузере) и криптовалюты. Все они сегодня работают и существуют только потому что есть алгоритмы которые работают в одну сторону легко и быстро (нанесение электронной цифровой подписи) а в обратку - настолько туго и бесконечног долго что сама по себе генерация лже-подписи становится невыгодной злоумышленнику просто по временнЫм затратам.

    А если говорить простыми словами то все подмножество алгоритмов делится на константные O(1) - это поиск в хеш-табличке. Логарифмические O(Log n) - это поиск в дереве или сортированной коллекции. Линейные - любой поиск в произвольнйо коллекции O(n). И дальше идут полиномиальные (это всегда цикл в цикле) экспоненциальные O(exp n). Здесь начинается криптография. И комбинаторные, в формулу которых входит факториал от N или еще апроксимируется O(n^n). Последние как-раз и создают тот самый класс нерешаемых наукой алгоритмов для которых пытаются строить квантовые устройства работающие совсем на других физических принципах.
    Ответ написан
    Комментировать
  • Как создать алгоритм, который определяет на видео в реальном времени цифры ( от 0 до 9) и цвет?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут наверное OpenCV не надо. Просто замерять цвета нескольких точек в течение 3-5 секунд (как фотик наводит резкость) и брать их среднее значение.

    Этот алгоритм прост - как автомат Калашникова. А все что простое - работает быстро. Как будет работать OpenCV на Raspberri мне даже страшно представить. Скорее всего плохо т.к. OpenCV проектировалась сразу для сильного железа а Распберри это больше игрушка для энтузиастов чем платформа для видое-обработки.
    Ответ написан
    2 комментария
  • Алгоритм правильного круга из клеточек (пикселей)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Пиксельная графика - это художественный прием который не имеет отношения например к инженерной графике.
    Грубо говоря абсолютно точно нарисованный круг по пикселям может некрасиво выглядеть в вашей игре.

    А если ему срезать углы - то можно достигнуть визуальной красоты. Только с точки зрения математики это уже будет овал или RoundRect.

    Против алгоритмов Брезенхема не имею ничего против. Но это про другое.
    Ответ написан
    Комментировать
  • Как отсортировать массив так, чтоб превратить в древовидную структуру?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор ну ты капец мотивирующие задачи ставишь. Все структуры данных - с анонимными полями. Ну и как писать алгоритм? Есть tuple с тремя полями. Поле первое без имени .. второе без имени.

    Мог бы хоть усилие приложить чтоб оформить.
    Ответ написан
  • Как найти все возможные варианты суммирования и вычитания натуральных чисел с минимальным хранением начальных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По сути задача звучит так.

    Разработать непозиционную систему счисления для представления любого простого числа наименьшим числом символов системы.

    Непозиционная в качестве примера - это римская. I/II/III символы. Или система фибоначчи 1,1,2,3,5,8. В твоём случае символ включает в себя еще и знак плюс-минус.
    Ответ написан
    7 комментариев
  • Почему алгоритм дейкстры не работает с ненаправленными графами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если под классического Дейкстру вы подсунете граф с циклами - то он зациклиться и никогда не выдаст ответа.

    Что поделаешь. Таков он есть алгоритм. Но с другой стороны. Зачем вам решать задачу поиска кратчайших маршрутов на циклах? Поищите реальный пример из жизни и вы поймете что либо абстракция "не та" либо не тот алгоритм.
    Ответ написан
  • Как решать сложные судоку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поиск в глубину с мини-максом. Тоже самое в шахматах и шашках и крестиках-ноликах. Меняются только ограничители на то куда можно ставить следующую фигуру. Основное ядро поискового алгоритма - это генерик. Обобщенный алгоритм если можно так сказать.
    Ответ написан
    Комментировать
  • В чём главное отличие информации от ключей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если взять фильтр Блума - то в нем принципиально нет информации. Есть только ключи. Более того. Стохастичные. Более того любая попытка расширить структуру заканчивается неудачей.

    Так может быть не стоит ставить вопрос деления вселенной на ключи и неключи?

    Иначе часть структур данных придется выбросить.
    Ответ написан
    Комментировать
  • Как определить функцию по значениям пар y;x?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Скорее всего ответов будет много.

    Если скопление точек - похоже на "рога" на плоскости то под функцию одинаково подходит и косинус, и парабола и гиперболический косинус.

    И здесь очень важно понять что четкого ответа не будет.
    Ответ написан
    Комментировать
  • Как на OpenCl работать с изображением?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Данный пример с чтением png - неудачный.
    Дело в том что декодирование png не параллелится. Оно будет выполнено на 1 ядре процессора. И это займет 80% времени. Я так думаю. А уже декорированную матрицу RGB - да можно процессить на Opencl разбивая картинку на строки или на фреймы. Но преимущества opencl будут потеряны. Ведь мы уже львиную часть времени простояли ожидая декодирования.
    Ответ написан
    Комментировать
  • Генерация города (процедурная)?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Город похож на город когда дома и кварталы в нем имеют углы - близкие к 90 градусов. Такой вот нечеткий криетрий.

    Мне кажется эту задачу можно решать генетическим алгоритмом просто набрасывая на карту случайные полигоны домов а потом при отборе отбирать те которые наиболее параллельны или перпендикулярны дорогам.
    Ответ написан
  • Как предать данные от детей к родителю в древовидном объекте?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Исходно дерево при этом должно остаться без изменеинй?
    Ответ написан
  • Существует ли структура данных «расширяемая 2D-таблица»?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Коробочное решение это хеш-табличка. Где ключ - координаты ячейки а значение это то что вы положите в ячейку.
    Ответ написан
    Комментировать
  • Как найти такие 2 числа в последовательности, сумма которых будет кратна m?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) Поскольку в задаче нет ограничения на память - то мы можем спокойно использовать мемоизацию для хранения нужных нам ответов.
    2) В процессе ввода (предполагается что ввод будет неспешный и задумчивый) чисел {n} мы строим хеш-таблицу всех возможных сочетаний пар {m(i),m(j)} где ключами будет кратность суммы этой пары. Здесь ключом будет сет чисел которые кратны этой сумме. Для простоты - табличку можно денормализовать и хранить несколько записей на 1 ключ. Например для {20,4}, будет кратность 2, 3, 4, 6, 8.
    3) Еще для упрощения можно отбросить составные числа ключа (4, 6, 8) и хранить цепочку простых.
    4) У этой задачи - бесконечное направление оптимизаций системы хранения этой таблицы. Зависит от дерзости автора. А он ... как видно парень очень суровый и дерзкий.
    Ответ написан
    Комментировать
  • Случайные числа с заданной сумой, какой алгоритм?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сортировка не нужна вобщем-то.

    Геометрически, задача сводится к генерации 3х случайных точек на отрезке длиной в 100.
    Ответ написан
    5 комментариев
  • Бот, понимающий смысл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно начать с построения семантической сети по тексту.
    После того как сеть будет построена. Задача бота сводится по поиску вершин и рёбер в этой сети.
    Вершины и ребра будут по сути ответом на поставленный вопрос.

    С ботами я никогда не имел дела. Но разбирался как работает RDF/Semantic web/GraphQl.

    Но это всё из области четкой логики. Из того что умерло в 80х вместе с языком Пролог и Лисп.

    Возможно современные боты строятся как-то по другому. На базе нечетких (аналоговых или вещественных
    понятий). Например если Саша любит Машу - то с точки зрения нечеткой логики это не факт
    а просто величина чуть меньше единицы. Предположение. И если по тексту будет много фактов
    проявления любовей от Саши то в этом случае эта нечеткая связь будет расти и крепнуть
    по некой функции с насыщением но никогда не достигнет единички а просто так и останется
    предположением. Сюда-же до кучи механику нейроных сетей.

    Хотя КМК НС плохо подходят для текстовых задач. У них есть большой лимит по памяти. Сеть хорошо
    обобщает факты. Но плохо помнит частные случаи.
    Ответ написан
    53 комментария
  • Как разбить число?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это очень стандартная задача для теории алгоритмов. Погугли "задача о разбиении числа". Она решалась очень много раз и есть для всех языков.
    Ответ написан
    Комментировать
  • Алгоритмы на хэш функциях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они так и называются SHA1 - Secure Hash Algorithm 1, MD5 - Message Digest 5.
    Ответ написан
    Комментировать
  • Как решить такую задачу на логику?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Элементарно.

    Обозначим поезда A,B. Обозначим управление например поездом A, так Left(A,x) - ехать влево на x единиц расстояния (это берется из возможности управления скоростью и контроля временем). Тогда заставим
    поезд A ехать туда сюда с амплитудой которая увеличивается. И в каждой крайней точке амплитуды
    - переключаться на поезд B и делать те-же манипуляции.

    Left(A,1), Left(B,1)
    Right(A,2), Right(B,2)
    Left(A,3), Left(B, 3)....

    Они гарантировано встретятся.
    Ответ написан
    Комментировать