Ответы пользователя по тегу Алгоритмы
  • Как генерировать последовательность случайных не повторяющихся чисел?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    тебе сначала нужно сгенерировать колоду, а потом из нее вынимать (с удалением) случайную карту,
    пока колода не пуста, вынимать случайную карту и добавлять ее в раздачу.
    Ответ написан
    2 комментария
  • Понятность против оптимальности - что лучше?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    понятнее всегда лучше, тк это позволяет в дальнейшем развивать код, у которого ВСЕГДА короткий жизненный цикл, тоесть вы его будете не один раз переделывать и переписывать, и в рамках этого понятность предпочтительней чем сиюминутная "эффективность" которая в длительной перспективы никогда не эффективна.
    Ответ написан
    Комментировать
  • Задачи с собеседований по максимальным числам: как решить?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    регулярки тебе никак не помогут в этой задаче
    вот тут почитай про этот тип задач
    Ответ написан
    1 комментарий
  • Как правильно распределить задачи в зависимости от нагрузки?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    если нет никаких особых свойств и закономерностей, а вся нагрузка распределена случайно по группам то уверен можно по порядку распределять, раздавая по порядку каждому серверу свою задачу. Все равно в среднем будет средняя нагрузка.
    Ответ написан
  • Как найти расхождения в сортировке массивов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    первыйМассив.зип(второйМассив).мап(абс(первыйЭлемент-второйЭлемент)).сумм
    П. С.
    если не понятно - то это сумма разностей элементов, по модулю.
    если элементы не числа, то вам самостоятельно нужно придумать метрику для сравнения элементов.
    Ответ написан
  • Доказательство корректности алгоритма и вычисление его сложности - как в этом разобраться?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    вы решаете оптимизационную задачу, вам нужно доказывать "оптимальность" (ну или близкую к оптимальному) решение, а не какую-то корректность (любая перелинковка может быть корректной, но не оптимальной).
    Критерий оптимальности вы вводите самостоятельноо, по нему же и оцениваете свой алгоритм.
    Можете например ввести понятия "стоимости перехода", и ценности отдельных "страниц" и потом расчитать для разных вариантов перелинковок эту стоимость, потом ее оптимизировать, показать что в среднем, например ваш вариант будет более выгодным и тд.
    Ответ написан
    2 комментария
  • Проблема со смыслом в текстах генерируемых ИИ?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    цепи маркова всегда генерируют случайные данные (мусор), просто ограниченные определенными правилами (размерами вероятностей).
    поднять качество можно используя соревновательный подходы GAN (в области генерации такой подход сейчас на острие находится).
    подробнее тут:
    https://ru.wikipedia.org/wiki/%D0%93%D0%B5%D0%BD%D...
    Ответ написан
    1 комментарий
  • Хеширование слова с допуском ошибок при вводе и/или написании. Как сделать?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    возможно графы лучше подойдут, тогда ты при наличии ошибки, можешь пробовать другие варианты одного из узлов (буквы).
    Ответ написан
  • Что нужно знать перед изучением теории автоматов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    хех, не стоит предварительную оптимизацию делать, начни изучать, что-то не поймешь - почитаешь.
    как правило все оказывается намного проще чем кажется со стороны.
    Ответ написан
    Комментировать
  • Как улучшить алгоритмическое мышления?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    прорешай 1000 задач с олимпиадного программирования (желательно с повышенной сложностью), и все прийдет само
    Ответ написан
    Комментировать
  • В какой программе можно быстро строить визуализацию координатных прямых и матриц, чтобы наглядно увидеть и закодить алгоритм?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    есть библиотечки которые автоматически схематично визуализируют связи в структурах данных.
    Ответ написан
    Комментировать
  • Как по-простому определить наличие кластеров во временных данных?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    смотри ты хочешь сгруппировать отдельные записи в группы, заменяя свойства в отдельных записях, на свойства целой группы, соответственно ты теряешь определённые данные у записей.
    и ты можешь для себя решить на какой размер потерянных данных ты готов пойти при группировке (упрощении) данных.
    тоесть померить размер ошибки после группировки, размер кластеризации у тебя ограничен сверху количеством записей, снизу единицей, ты можешь начать с количества кластеров равного размеру количества записей, постоянно сокращая количество кластеров, и оценивая ошибку после этого сокращения, до тех пор пока размер ошибки не превысит максимально допустимую.
    это один метод.
    ==========
    возможен второй метод: например связанный с оценкой динамики роста размера ошибок и сокращения количества кластеров, ты точно также можешь сокращать количество кластеров, не задавая сам размер ошибки, а оценивая скорость роста ошибки. Грубо говоря например ты сократил количество кластеров на 20% ошибка выросла на 1%, ты сократил ещё раз количество кластеров на 20%, ошибка выросла на 2%, ты сократил количество кластеров ещё на 20% ошибка выросла на 30% (наверно последний шаг не стоит приминять, и количество кластеров оставить на предыдущем уровне, ну или попробовать сократить не на 20% а на 10% и опять оценить)
    ======
    можно и другие методы придумать, связанные с мерой близости между отдельными элементами, при обьединении их в кластер.
    Ответ написан
    Комментировать
  • Как найти все слова которые начинаются на букву "я", а заканчиваются на "c"?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    Яндекс?
    Ответ написан
    Комментировать
  • Помощь в школьном олимпиадном программировании?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    продолжайте искать решение, и изучать алгоритмы/структуры данных, а также подходы которые используют для решения этих задач.
    В начале может понадобиться неделя на решение сложной задачи, потом научитесь за день решать задачи, потом привыкните в течении минут решать эти задачи)
    Ответ написан
    4 комментария
  • Алгоритм парсинга страниц по списку ключевых слов?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    переборы, переборчики, простите мама так жизнь меня воспитала, по пхпэшным понятиям блатным.
    откуда такая любовь у пхпшников всё через переборы реализовывать?
    когда у вас ключевиков за несколько тысяч перевалит, вы часами будете ждать результаты ваших переборов, тем более на пхп).
    более изящные решение - использовать суффиксные деревья.
    Ответ написан
    Комментировать
  • Важно ли уметь реализовывать структуры данных и алгоритмы?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    для разработчика - жизненно важно, для внедрителя готовых решений - совсем не важно.
    решите для себя кем хотите быть.
    Ответ написан
    Комментировать
  • Как работает stateless token authentication?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    очень легко мыслить токенами, как сессией, но токен это не сессия, не стоит путать.
    Токены используют как раз для того чтоб отойти от классической схемы с сессиями/паролями.
    по порядку:
    1) смотрите у вас есть сервис, состоит например из 10 серверов, которые отвечают за разные части функционала, поскольку функционал коммерческий вам нужно проверять каждый запрос от пользователя есть ли у него права для этого запроса.
    вы вынуждены сделать единый сервер валидации, и с каждого своего сервера, для каждого запроса, запрашивать на сервере валидации проверку пользователя и его прав.
    в такой ситуации сервер валидации для вашего сервиса становиться бутылочным горлышком, и мешает горизонтальной масштабируемости.
    и абсолютно без разницы валидируете вы пользователя по паролю, айпи, или токену, сессии, схема одна и таже, производительность тоже одна и таже (именно поэтому нет никакого смысла менять сверку пользователя вместо пароля на сверку по айпи, или токену, или сессию, тем более понятно почему использования айпи в этой схеме просто глупая идея).

    поэтому есть задача отойти от этой схемы, для возможности простого горизонтального масштабирования, для этого вы берёте информацию о пользователе (например его айди, права, и тд) и зашифровываете эти данные, и передаёте пользователю в виде токена.
    2) На каждом вашем сервере есть алгоритм быстрой расшифровки, который на лету проверяет токены, и из него получает нужную информацию, о правах и айди пользователя (валидирует пользователя, без бутылочного горлышка), сами токены временные, в них также вшивают информацию о времени его действия, обычно в районе пары часов/суток, после чего вы перегенерируете токен заново (ключ для перегенерации и получения нового токена также вшиваете в токен, осуществляя непрерывность процесса перегенерации токенов).
    3. Что делать если пользователь поменял пароль?
    ничего - токен даёт пользователю право на вход, и не имеет значения какой у пользователя пароль.
    Ответ написан
    Комментировать
  • Популярный сервис без/с плохой системы рекомендаций?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    плохая/хорошая - это же всё относительно, возьмите любой сервис сделайте лучше и предыдущая станет плохой).
    Зачем вам заграничные сервисы?
    если вы реально хотите построить рекомендационную систему, тогда вам нужно отталкиваться хотябы от тех данных что вам предоставляют, открывает ли сервис данные по предпочтению пользователей? чтоб потом какие-то рекомендации строить?
    вобщем не замарачивайтесь возмите ВКшечку, и делайте рекомендации постов/новостей, например.
    Ответ написан
    2 комментария
  • Как перед классификацией текста отделить документы которые нужно классифицировать от остальных?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    ну если хотите уберите не существенный текст -> соберите со всех документов общие наиболее употребимые слова, после чего предварительно удаляйте их из всех текстов, оставляя тем самым только наиболее специфичный текст.
    Ответ написан
    Комментировать
  • Оптимальный алгоритм возведения в степень по модулю. Как улучшить?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    у вас уже быстрая реализация, единственно вам нужно оптимизировать долгие операции (такие как условный переход - одна из самых затратных операций), ну и по возможности избавиться от лишних операций.
    например вместо проверки (деления на 2 без остатка), достаточно проверять последний бит числа равный нулю.
    деление на 2 тоже можно заменить сдвигом.

    лучше вобще избавиться от условных операций, заменив их на безусловные -> тк у вас везде происходит операция х*х -> эту часть операций можно объединить
    a оставшуюся операцию с N можно заменить на двойную (где битовый остаток - это последний бит в числе N будет равен или 1 или 0 в зависимости от чётности числа).
    пример: n= (n>>1)*(битовый остаток) + (n--)*(!битовый остаток)
    такая оптимизация гарантированно ускорит работу.
    Ответ написан
    Комментировать