Рубрика «алгоритмы поиска»
Самый обобщённый живучий алгоритм
2025-07-21 в 9:02, admin, рубрики: Алгоритмы, алгоритмы поиска, боты, ИИ, ии-ассистент, ненормальное программирование, разработка игр, С++, симуляция, шаблоныКак измерить сезонность в SEO: пошаговая инструкция
2025-06-03 в 8:07, admin, рубрики: selectel, алгоритмы поиска, веб-дизайн, поисковая выдача, поисковая оптимизация
Измерение сезонности в SEO — один из ключевых аспектов продвижения в поисковых системах. Оно позволяет составить представление о том, как сезонные колебания спроса могут влиять на поведение пользователей и показатели сайта, и на основе этого выстроить грамотную стратегию продвижения и оптимизации.
Чтобы понять, как сильно сезонка влияет на показатели сайта, необходимо определить ключевые запросы, проанализировать динамику запросов и позиций, а затем сравнить показатели разных сезонов. На каждом шаге можно использовать свои инструменты.
Привет! Я Миша, младший специалист по продвижению сайтов в Selectel. В этой статье я расскажу, как определить тенденции роста и снижения трафика в зависимости от сезона, чтобы на основе этих данных выстроить стратегию продвижения сайта. Подробности — под катом.
Читать полностью »
Отчет о проекте эффективного приоритетного дерева SAPT
2025-01-27 в 8:15, admin, рубрики: алгоритм, алгоритмы поиска, алгоритмы сортировки, дерево, деревья поиска
Отчет о, написанном мною, алгоритмическом статичном двунаправленном дереве, имеющим сложность Читать полностью »
Ответом на задачу по упаковке цветов в бесконечной сетке оказалось число 15
2023-04-28 в 13:00, admin, рубрики: infinite grid, ruvds_перевод, Алгоритмы, алгоритмы поиска, бесконечная сетка, Блог компании RUVDS.com, графы, комбинаторика, математика
В задаче по «упаковке цветов графа» (в оригинале packing coloring, — прим. пер.) спрашивается, сколько чисел необходимо для заполнения бесконечной сетки так, чтобы идентичные числа никогда не оказывались слишком близко друг к другу. И новый арифметический эксперимент с использованием компьютера даёт на удивление простой ответ.
Сколько чисел потребуется для заполнения бесконечной сетки так, чтобы расстояние между вхождениями одного числа было больше самого этого числа?Читать полностью »
Биоинформатика — это наука или всё же метод?
2022-02-09 в 9:01, admin, рубрики: ruvds_статьи, Алгоритмы, алгоритмы обработки данных, алгоритмы поиска, биоинформатика, биология, Биотехнологии, Блог компании RUVDS.com, вычислительная биология, Научно-популярное
Про биоинформатику слышали многие. Кто-то знает больше, кто-то меньше. Мы постарались раскрыть вопрос этой, относительно новой, науки. Так сказать, дать общие представления читателю об основных вехах развития, методах и проблемах: решённых и существующих на нынешнее время.Читать полностью »
«Тетрис» в роли принтера
2019-11-11 в 4:28, admin, рубрики: Nes, tetris, Алгоритмы, алгоритмы поиска, Игры и игровые приставки, ненормальное программирование, эмуляторы
Поворачивая, переставляя и опуская вниз заранее заданную последовательность фигур, Tetris Printer Algorithm использует механику «Тетриса» для генерации произвольных битовых изображений.
Описание алгоритма
Алгоритм построчно преобразует пиксели исходного изображения в квадраты поля «Тетриса», двигаясь снизу вверх. Для генерации отдельного квадрата алгоритм собирает структуру, состоящую из прямоугольной области, полностью опирающейся на один квадрат под ней. После завершения сборки прямоугольной области её строки очищаются, оставляя под собой один квадрат. Вот три примера такого поведения.



Как показано ниже, алгоритм также может генерировать одной структурой несколько квадратов.

В процессе построения строки все квадраты, созданные данным способом, должны на что-то опираться. На показанных выше изображениях сгенерированные квадраты стоят на полу игрового поля. Однако если произвольная строка содержит дырки, то она не сможет обеспечить опору, необходимую для построения строки над ней. Алгоритм решает эту проблему, создавая поверх строки с дырками плоскую платформу. В показанной ниже анимации построенная поверх строки платформа состоит из одного красного квадрата. Платформа — это временная структура, и вставка последней фигуры удаляет её.
Читать полностью »
Оптимизация поиска в ширину: как обработать граф с 10 миллиардами состояний
2019-06-11 в 6:27, admin, рубрики: breadth-first search, Алгоритмы, алгоритмы поиска, головоломки, графы, Игры и игровые приставки, оптимизация кода, поиск в ширину, поисковые технологии, Программирование
Пару месяцев назад мне наконец пришлось признать, что я недостаточно умён, чтобы пройти некоторые уровни головоломки Snakebird. Единственным способом вернуть себе часть самоуважения было написание солвера. Так я мог бы притвориться, что создать программу для решения головоломки — это почти то же самое, что и решить её самому. Код получившейся программы на C++ выложен на Github. Основная часть рассматриваемого в статье кода реализована в search.h и compress.h. В этом посте я в основном буду рассказывать об оптимизации поиска в ширину, который бы потребовал 50-100 ГБ памяти, чтобы он уместился в 4 ГБ.
Позже я напишу ещё один пост, в котором будет описана специфика игры. В этом посте вам нужно знать, что мне не удалось найти никаких хороших альтернатив грубому перебору (brute force), потому что ни один из привычных трюков не сработал. В игре множество состояний, потому что есть куча подвижных или толкаемых объектов, при этом важна форма некоторых из них, которая может меняться со временем. Не было никакой пригодной консервативной эвристики для алгоритмов наподобие A*, позволяющих сузить пространство поиска. Граф поиска был ориентированным и заданным неявно, поэтому одновременный поиск в прямом и обратном направлении оказался невозможным. Единственный ход мог изменить состояние множеством несвязанных друг с другом способов, поэтому не могло пригодиться ничего наподобие хеширования Зобриста.
Приблизительные подсчёты показали, что в самой большой головоломке после устранения всех симметричных положений будет порядка 10 миллиардов состояний. Даже после упаковки описания состояний с максимальной плотностью размер состояния составлял 8-10 байт. При 100 ГБ памяти задача оказалась бы тривиальной, но не для моей домашней машины с 16 ГБ памяти. А поскольку Chrome нужно из них 12 ГБ, мой настоящий запас памяти ближе к 4 ГБ. Всё, что будет превышать этот объём, придётся сохранять на диск (старый и ржавый винчестер).
Читать полностью »
Так устроен поиск заимствований в Антиплагиате
2018-11-14 в 6:44, admin, рубрики: Алгоритмы, алгоритмы поиска, анализ данных, антиплагиат, Блог компании «Антиплагиат», математика, обработка текстов, поисковые технологии, Семантика, шинглыМы уже рассказывали вам об интересных статистиках текстов, делали обзор статей применений автокодировщиков в анализе текстов, удивляли нашими свежими алгоритмами поиска переводных заимствований и парафраза. Я решил продолжить нашу корпоративную традицию и, во-первых, начать статью с «Т», а во-вторых, рассказать:
- как быстро найти абзац текста среди сотен миллионов статей;
- во что превращается документ после загрузки в систему Антиплагиат, и что с этим делать дальше;
- как формируется отчет, который почти никто не смотрит, а стоило бы;
- как проиндексировать не все, но достаточно.
Динамическое программирование или «Разделяй и Властвуй»
2018-09-21 в 10:00, admin, рубрики: javascript, open source, алгоритм, Алгоритмы, алгоритмы поиска, динамическое программирование, Программирование, разделяй и властвуйВ этой статье рассматриваются сходства и различия двух подходов к решению алгоритмических задач: динамического программирования (dynamic programing) и принципа «разделяй и властвуй» (divide and conquer). Сравнение будем производить на примере, соответственно, двух алгоритмов: бинарного поиска (как быстро найти число в отсортированном массиве) и расстояния Левенштейна (как преобразовать одну строку в другую с минимальным количеством операций).
Хочу сразу заметить, что данное сравнение и объяснение не претендует на исключительную правильность. И возможно даже некоторые преподаватели в университетах захотели бы меня отчислить :) Эта статья является всего-лишь моей персональной попыткой разложить себе же все по полочками и понять что такое динамическое программирование и каким образом в нем участвует принцип «divide and conquer».
Итак, приступим…
«Трое в лодке, нищета и собаки», или как Антиплагиат ищет парафраз
2018-09-11 в 12:30, admin, рубрики: Алгоритмы, алгоритмы поиска, анализ данных, антиплагиат, Блог компании «Антиплагиат», математика, машинное обучение, обработка текста, СемантикаНаступил новый учебный год. Студенты получили расписание занятий и стали задумываться о пьянках-гулянках-девушках-гитарах будущей сессии. Написание курсовых, дипломов, статей и диссертаций не за горами. А значит, грядут и анализ текстов на наличие заимствований, и отчеты о проверке, и прочая головная студенческая и администраторская боль. И у сотен тысяч людей (без шуток – мы посчитали!) уже возникает закономерный вопрос – как же обмануть «Антиплагиат». В нашем случае практически все способы обмана так или иначе связаны с искажениями текста. Мы уже научили «Антиплагиат» обнаруживать текст, «искаженный » с помощью перевода с английского на русский ( мы уже писали об этом в первой статье нашего корпоративного блога). Сегодня речь пойдет о том, как обнаруживать самый эффективный, хотя и трудоемкий способ искажения текста – парафраз.




