
219.48
Общий рейтинг
Алгоритмы *
Все об алгоритмах
Сначала показывать
Порог рейтинга
Уровень сложности
2 млн точек на карте? легко!
3 мин
15KНе так давно для создания сервиса (да и «в загашник» положить модуль) потребовалось придумать способ как быстро из sql базы делать выборки точек расположенных на карте.
Кода будет мало, что бы не отвлекать от понимания системы в целом.

Кода будет мало, что бы не отвлекать от понимания системы в целом.

+32
Математическая модель общения
2 мин
4.3KЯ не собираюсь строить здесь полную теорию. Не будет даже собственно математики. Хочу лишь отметить актуальность и указать пару математических концептов, мне кажется хорошо подходящих для описания определенных аспектов сетевого общения. Иначе говоря, я хотел бы просто инициировать тему.
Для начала, как на словах выглядит процесс, который мы хотим описать — людей захватывает определенная тема, обсуждение, там идет довольно интенсивное и довольно непредсказуемое взаимодействие, в результате которого происходит случайный переход к другой теме, и всё повторяется. Набор тем более-менее ограничен, поэтому имеет место некая цикличность. Таким образом, процесс напоминает броуновское движение, для которого есть развитая теория. За одним исключением — захват общего внимания определенной темой выглядит как попадание фокуса внимания в странный аттрактор.
Для начала, как на словах выглядит процесс, который мы хотим описать — людей захватывает определенная тема, обсуждение, там идет довольно интенсивное и довольно непредсказуемое взаимодействие, в результате которого происходит случайный переход к другой теме, и всё повторяется. Набор тем более-менее ограничен, поэтому имеет место некая цикличность. Таким образом, процесс напоминает броуновское движение, для которого есть развитая теория. За одним исключением — захват общего внимания определенной темой выглядит как попадание фокуса внимания в странный аттрактор.
+1
CCV: современная библиотека компьютерного зрения
1 мин
15KСпустя два года разработки состоялся релиз библиотеки ccv 0.1, которая использует ряд современных алгоритмов компьютерного зрения.
Библиотека ccv написана на C и позиционируется как компактная, лёгкая альтернатива OpenCV, поэтому из неё старательно изъяты все несущественные функции. Таким образом, ccv предназначена не для экспериментов с разными алгоритмами, а для практического использования в конкретных приложениях.
Библиотека ccv написана на C и позиционируется как компактная, лёгкая альтернатива OpenCV, поэтому из неё старательно изъяты все несущественные функции. Таким образом, ccv предназначена не для экспериментов с разными алгоритмами, а для практического использования в конкретных приложениях.
+42
Скринкаст: монада Maybe на языке C#
1 мин
21KНебольшая иллюстрация того, как на языке C# реализовать монаду Maybe и зачем это вообще нужно. Смотреть видео рекоммендуется в разрешении 720p.
Сопутствующую статью можно найти тут (англ. яз.). Комментарии приветствуются!
Сопутствующую статью можно найти тут (англ. яз.). Комментарии приветствуются!
+34
Однострочники на Си/С++. Часть 2
2 мин
9.6K
Ранее я уже публиковал статью о Однострочниках на С++. Так в этом посте я хочу упомянуть ещё несколько алгоритмов, а также несколько реализаций алгоритма обмена двух чисел(с вычислением времени работы).
Всех заинтересовавшихся прошу под кат;)
+1
Генерация расклада для карточных игр
2 мин
2.8KХотел бы предложить на суд общественности алгоритм для карточной игры, который исключает “шулерство”. Т.е. расклад игры генерируется участниками совместно, а “вскрытие” конкретной карты может производится только для одного игрока.
+5
Из постфиксной в инфиксную нотацию
4 мин
26KОб обратной польской нотации(записи) на Хабре уже рассказывали . Как известно вся сила ОПН в постфиксной записи математического выражения. О том как преобразовать привычную для нас инфиксную запись в постфиксную детально рассмотрено в статье выше, на Википедии и даже приведена реализация на Ассемблере. Но вот о том как провернуть обратное действие я статей не нашел.
+1
О прямоугольных координатах и гексагональных сетках
4 мин
29KДумаю, никому не нужно объяснять, насколько широко в играх (и не только) используются гексагональные сетки. Как для заданной шестиугольной ячейки найти координаты ее центра и вершин — достаточно очевидно. Обратное же преобразование (т.е. поиск ячейки, в которую попала данная точка с координатами x и y) уже не столь тривиально. О нём и пойдет речь в данном топике.
+63
Использование UML для эксперимента по эволюционной систематике прокариот, и косвенно о психологии ученых
7 мин
2.3KЭта статья продолжение двух других Интересные результаты о эволюционной систематике прокариот или «многовидовое происхождение», Геномы секвенированных организмов — ошибки в базах.
После них я имел честь получить некоторую обратную связь как от интересующихся, так и от профессионалов в этом вопросе. Также, как можно было видеть, была достаточно оживленная дискуссия. С одной стороны я хотел бы ответить на полученные замечания.
С другой поставить новый эксперимент. И было бы желательно привлечь к этому тех кто интересуется подобными вещами. Если у вас нет времени — может у вас есть свободное процессорное время :)?
После них я имел честь получить некоторую обратную связь как от интересующихся, так и от профессионалов в этом вопросе. Также, как можно было видеть, была достаточно оживленная дискуссия. С одной стороны я хотел бы ответить на полученные замечания.
С другой поставить новый эксперимент. И было бы желательно привлечь к этому тех кто интересуется подобными вещами. Если у вас нет времени — может у вас есть свободное процессорное время :)?
+1
Геномы секвенированных организмов — ошибки в базах
4 мин
4.1KНаиболее известная база, содержащая геномы секвенированных организмов — NCBI, содержит большое количество систематических ошибок. Из-за этого практически невозможно использование этих данных, и тем более невозможно изучение механизма мутаций (а, следовательно, и эволюции), так как в таком случае исследуются человеческие ошибки при секвенировании, а не природные мутации. Поэтому прежде чем использовать эти данные необходимо уточнение этой базы.
И это трудоемкая задача, её невозможно решить для отдельного нужного организма. Поэтому хотелось бы найти тех, кто хотел бы создать свой русскоязычный источник аналогичный NCBI, но с уточненной информацией.
В статье показывается на сколько массовы ошибки геномов, находящихся в NCBI и рассказывается как самому в этом убедится, и некоторые способы исправления.
И это трудоемкая задача, её невозможно решить для отдельного нужного организма. Поэтому хотелось бы найти тех, кто хотел бы создать свой русскоязычный источник аналогичный NCBI, но с уточненной информацией.
В статье показывается на сколько массовы ошибки геномов, находящихся в NCBI и рассказывается как самому в этом убедится, и некоторые способы исправления.
+3
Однострочники на С++
2 мин
62K
На хабе появилось несколько топиков об «однострочниках» на разных языках, которые решали простые задачи. Я решил опубликовать несколько алгоритмов на языке C/С++.
Итак, поехали!
+74
NAVTEQ True: сбор данных об улицах и дорогах
1 мин
1.2KНа борту фотомобиля:
- Фотокамеры
- GPS
- Лидар
- IMU (Inertial measurement unit)
- Энкодер на колесе
Вместе они позволяют получить:
- 360°-панорамы улиц
- Точную 3D-модель пространства
- Дорожные знаки и разметку
- Резкие повороты дороги
Всё это стоит увидеть в этом видео:
+16
Ближайшие события
Интересные результаты о эволюционной систематике прокариот или «многовидовое происхождение»
6 мин
4KФилогенетическая систематика пытается определить родство различных организмов и их эволюционную близость. Если не так давно об этом судили по внешним признакам организмов (морфологии если точнее), то теперь однозначно перешли к суждению путем сравнения геномов этих организмов.
Но ДНК организма состоит из множества нуклеотидов и учитывать их все для определения схожести организмов сильно затруднительно. Кроме того ДНК постоянно эволюционирует. Поэтому биологи начали основываться на рибосомной рибонуклеиновой кислоте (рРНК), т.к. эти молекулы обнаружены у всех клеточных форм жизни, их функции связаны с важнейшим для организма процессом трансляции, первичная структура в целом характеризуется высокой консервативностью.
Считается, что особенностью рРНК является нахождение вне сферы действия отбора, поэтому данные молекулы эволюционируют в результате спонтанных мутаций, происходящих с постоянной скоростью, и накопление таких мутаций зависит только от времени. Таким образом, мерой эволюционного расстояния между организмами служит количество нуклеотидных замен в молекулах сравниваемых рРНК.
Известно, что в рибосомах прокариот и эукариот присутствуют 3 типа рРНК. Информационная емкость крупных молекул больше, но их труднее анализировать. Поэтому наиболее удобным оказался анализ молекул рРНК средней величины: 16S (~1600 нуклеотидов). Систематика основывается на расчете коэффициентов сходства сравниваемых организмов. Именно на основании анализа рРНК современная систематика выделяет три домена бактерии, археи и эукариоты, а так же на этом основывается систематика, бактерий и архей X издания Берги.
Вот такое положение дел в этой сфере на данный момент. Мной же была сделана попытка создать основы для несколько другой, если хотите альтернативной, систематики. Почему? Консервативность рРНК тем не менее не достаточно велика, консервативны лишь некоторые её части. А так как есть достаточно вариабельные части у рРНК, то приходится делать допущения и предполагать, где были разрывы и вставки отдельных фрагментов при мутации. А т.н. выравнивание сейчас делается с очень большой погрешностью.
В итоге, я пришел к выводу, что необходимо при сравнении геномных последовательностей сравнивать такие участки, которые вообще не подвергались мутациям, и которые абсолютно идентичны в разных организмах.
Смотрим, что из этого получилось.
Но ДНК организма состоит из множества нуклеотидов и учитывать их все для определения схожести организмов сильно затруднительно. Кроме того ДНК постоянно эволюционирует. Поэтому биологи начали основываться на рибосомной рибонуклеиновой кислоте (рРНК), т.к. эти молекулы обнаружены у всех клеточных форм жизни, их функции связаны с важнейшим для организма процессом трансляции, первичная структура в целом характеризуется высокой консервативностью.
Считается, что особенностью рРНК является нахождение вне сферы действия отбора, поэтому данные молекулы эволюционируют в результате спонтанных мутаций, происходящих с постоянной скоростью, и накопление таких мутаций зависит только от времени. Таким образом, мерой эволюционного расстояния между организмами служит количество нуклеотидных замен в молекулах сравниваемых рРНК.
Известно, что в рибосомах прокариот и эукариот присутствуют 3 типа рРНК. Информационная емкость крупных молекул больше, но их труднее анализировать. Поэтому наиболее удобным оказался анализ молекул рРНК средней величины: 16S (~1600 нуклеотидов). Систематика основывается на расчете коэффициентов сходства сравниваемых организмов. Именно на основании анализа рРНК современная систематика выделяет три домена бактерии, археи и эукариоты, а так же на этом основывается систематика, бактерий и архей X издания Берги.
Вот такое положение дел в этой сфере на данный момент. Мной же была сделана попытка создать основы для несколько другой, если хотите альтернативной, систематики. Почему? Консервативность рРНК тем не менее не достаточно велика, консервативны лишь некоторые её части. А так как есть достаточно вариабельные части у рРНК, то приходится делать допущения и предполагать, где были разрывы и вставки отдельных фрагментов при мутации. А т.н. выравнивание сейчас делается с очень большой погрешностью.
В итоге, я пришел к выводу, что необходимо при сравнении геномных последовательностей сравнивать такие участки, которые вообще не подвергались мутациям, и которые абсолютно идентичны в разных организмах.
Смотрим, что из этого получилось.
+30
Реализация алгоритма k-means на c# (с обобщенной метрикой)
6 мин
34KВсем привет. Продолжая тему того, что Andrew Ng не успел рассказать в курсе по машинному обучению, приведу пример своей реализации алгоритма k-средних. У меня стояла задача реализовать алгоритм кластеризации, но мне необходимо было учитывать степень корреляции между величинами. Я решил использовать в качестве метрики расстояние Махаланобиса, замечу, что размер данных для кластеризации не так велик, и не было необходимости делать кэширование кластеров на диск. За реализацией прошу под кат.
+12
Мысли перед сном: алгоритм фрактального перемешивания
4 мин
1.6KНедавно я впервые в этом сезоне ночевал на даче и никак не мог уснуть из-за непривычной обстановки. И тогда мой мозг понесся думать про XOR-шифрование. Оно ведь довольно простое, а я думал, как можно его улучшить. К сожалению, вместо того, чтобы сладко уснуть, я додумался до того, что надо перетасовать исходные данные каким-нибудь образом. И тогда мне в голову пришла идея фрактального перемешивания (из-за которой я уснул после четырех ночи).
+6
Russian Code Cup 2012: подробный разбор задач с отборочного раунда (полуфинал)
18 мин
31K
В прошлую субботу, 16 июня, завершился отборочный раунд Russian Code Cup 2012. Задачи отборочного раунда посложнее, чем были на квалификации – ну на то он и полуфинал. Я уже рассказывал о том, что предлагалось участникам на предыдущих онлайн-турах, разбирал подробно варианты решений (Q1, Q2, Q3).
В отборочный раунд было приглашено 600 человек. 434 человек смогли решить хотя бы одну задачу. Все задачи решили только двое. 50 лучших перешли в финал. Всего за 3 часа тура было отправлено в проверяющую систему 3190 решений.
Итак, перейдем к самим задачам. Я пострался объяснить их так, чтобы решения были понятны даже делающим первые шаги в спортивном программировании (да и в программировании вообще).
+50
Google тестирует самообучаемую нейросеть (16 тыс. процессорных ядер)
1 мин
4.8K
Группа учёных из компании Google поставила интересный эксперимент: способна ли нейросеть самостоятельно выработать свойства высокого уровня на базе большого массива непомеченных данных. Например, если ей дать выборку из миллиона изображений, сможет ли она научиться находить на них лица? Идея в том, что система ни разу не видела изображение, которое было бы помечено как «лицо».
+6
Простой пример кодирования текстовой строки по Хаффману
4 мин
52KПеревод
Вы, наверное, слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то предлагаю вам самостоятельно поискать в интернете — в этой статье я не буду донимать вас уроками истории или математики. Я попробую показать вам на практике, как применить этот алгоритм к текстовой строке. Наше приложение просто сгенерирует значения кода для символов из введенной строки и наборот — воссоздаст оригинальную строку из представленного кода.
+8
Минимакс на примере игры в зайца и волков
11 мин
92K
Данная статья предназначена для разъяснения сути фундаментальных методов построения и оптимизации «искусственного интеллекта» для компьютерных игр (в основном антагонистических). На примере игры в зайца и волков будет рассмотрен алгоритм «Минимакс» и алгоритм его оптимизации «Альфа-бета отсечение». Помимо текстового описания, статья содержит иллюстрации, таблицы, исходники, и готовую кроссплатформенную игру с открытым кодом, в которой вы сможете посоревноваться с интеллектуальным агентом.+73
Вклад авторов
ZlodeiBaal 1564.0Fil 1460.0agorkov 1345.0haqreu 1289.0Leono 1086.0YUVladimir 1037.0valemak 1014.0mephistopheies 996.0Zalina 922.0
