Ответы пользователя по тегу Алгоритмы
  • Можно ли сделать быстрый поиск по карте с 1 млн маркеров (MongoDb) и кластеризацией?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почти все гео-поисковые системы для хранения геометрии используют либо quad-tree либо R-tree. К чему здесь Mongo - вообще непонятно. Это бд другого типа. Для документов.

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Похоже это называется Расстояние Манхеттена.
    Как пешеход идёт по кварталам.

    Кстати автор слегка хитрит. Там ещё есть два пути с таким же числом поворотов.

    Нужно ли искать все? И как долго автор хочет искать пока задача не превратилась чисто в комбинаторную?
    Ответ написан
  • Есть ли алгоритм кодирования, который не допускает подряд 3-6 одинаковых значений?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    На самом деле эту задачу можно сделать очень разными способами. Деструктивными и нет. Экономными (массив) и неэкономными (зубчатый или двумерный массив). И автор должен конкретизировать как он хочет.
    Ответ написан
    Комментировать
  • Не получается расшифровать изображение?

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

    Разделение кода на слои также является нужным скилом для c++ ника.
    Ответ написан
    2 комментария
  • Читабельность кода или скорость его выполнения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) Существуют языки программирования в которых рекурсия вообще заменяет цикл (Haskell, Erlang) и другого способа описать итерацию кроме как через рекурсивную функцию - нету. Но наверное в топике тема рекурсии - не основная - а просто частный пример.

    2) Во всех случаях всегда надо выбирать "читабельность". Прошли времена когда программисты отдавали дань ассемблеру или указателям на сырую память. Сегодня так пишут все меньше и меньше. И основная задача написания кода - сделать его понятным для вашего коллеги. Цитата : "Код пишется человеком для прочтения человека и лишь в очень редких случаях - для машины".

    Вобщем пишите код. Просите коллег чтоб они его посмотрели и ПОНЯЛИ что вы имели в виду. И если коллеги будут кричать WTF! - фиксируйте их замечания и доводите до такого состояния чтобы ни у кого не было вопросов.
    Это будет идеальный код по Роберту Мартину.
    Ответ написан
    Комментировать
  • Зачем нужно знать эффективность\сложность алгоритма?

    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
    Книжка странная. Мне кажется она - опускается до уровня детей. И кормит им информацию с ложечки.

    Если вы - нормальный инженер It-технологий то можете потреблять пищу в твердом виде. Посмотрите Алгоритмы и - Никлауса Вирта. Это - золотая классика. Написал отец и создатель Паскаля. Тоесть человек который специально и создавал язык программирования для процесса обучения.

    А этот мышиный флуд... автора ... как ево там. Бхаргава... Оставте для развлечения на потом. Я не имею ничего против сути информации. Но форма подачи какая-то ... ну как будто половина айтишников - умственно отсталые и им обязательно нужно рисовать картинки.
    Ответ написан
    Комментировать
  • Почему алгоритм дейкстры не работает с ненаправленными графами?

    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
    Исходно дерево при этом должно остаться без изменеинй?
    Ответ написан