Pull to refresh
8
0
Александр Соловьёв @Dr_Dash

Пользователь

Русские шашки: реализация минимакса с альфа-бета отсечением в Golang

Level of difficulty Easy
Reading time 4 min
Views 1.2K
Algorithms *Go *Machine learning *Artificial Intelligence
Review

В предыдущих записях блога мы обсудили, как эффективно генерировать ходы и представлять шашечную доску в Golang. Теперь мы углубимся в сердце нашей игры в шашки: ИИ, который принимает решения. ИИ будет использовать алгоритм Minimax с Alpha-Beta отсечением, популярный метод принятия решений в настольных играх.

Читать далее
Total votes 4: ↑3 and ↓1 +2
Comments 3

Свой VPN сервер дома

Level of difficulty Easy
Reading time 4 min
Views 33K
Configuring Linux *Server Administration *
Tutorial

Последнее время вижу очень много статей на тему vds с впн для тех или иных задач.

В основном людям нужен такой сервер для обычного неторопливого серфинга.

В связи с тем что сервер за пределами РФ стало получить сложнее и дороже решил поделиться этим способом. Он подойдет если у вас есть возможность создать виртуалку дома или рф хостинг который заметно дешевле зарубежного.

Читать далее
Total votes 21: ↑12 and ↓9 +3
Comments 52

Моделирование большого количества взаимодействующих друг с другом частиц

Reading time 6 min
Views 29K
Algorithms *
Tutorial
Sandbox
Рассмотрим ситуацию, когда необходимо обрабатывать столкновения между объектами. Как вы в этом случае поступите? Вероятно, самым простым решением будет проверить каждый объект с каждым другим объектом. И это правильное решение, и все будет замечательно до тех пор пока объектов не много. Как только их станет порядка нескольких тысяч, вы заметите, что все стало как-то медленно работать. А если частиц несколько десятков тысяч или сотен? Тогда все замрет. Вот здесь уже интересно, на какие хитрости и оптимизации вы пойдете, чтобы решить такую проблему.

Для простоты, будем рассматривать 2D случай, частицы круглые, радиус частиц у всех одинаковый.

Содержание


1. Обзор алгоритмов
1.1. Полный перебор
1.2. Sweep & Prune
1.3. Регулярная сеть
2. Некоторые оптимизации
2.1. Sweep & Prune
2.2. Регулярная сеть
3. Сравнение скорости выполнения
4. Приложение (программа и исходный код)
5. Заключение

Читать дальше →
Total votes 147: ↑145 and ↓2 +143
Comments 45

Неожиданная эффективность условных вероятностей

Reading time 11 min
Views 7.1K
Algorithms *Mathematics *Popular science
Translation

В последнее время я решил заняться задачами по теории вероятностей, потому что мне кажется, получение знаний в этой сфере принесёт большую пользу. Я нашёл ключ, часто использующийся для решения многих из них: накладываем условие на промежуточное состояние, а затем отдельно вычисляем значение этого промежуточного состояния. Это превращает очень сложные задачи в такие, где решение практически очевидно. [Однако в таком случае мы иногда обмениваем эффективность на простоту.]

Такой подход был полезен для решения задачи о днях рождения в очереди, и в статье я приведу ещё три примера, в которых это проявляется. Если задача покажется вам неинтересной, перейдите к следующей, они все разные.
Читать дальше →
Total votes 17: ↑17 and ↓0 +17
Comments 9

VPN Gate, или — неубиваемая Великим Китайским Файрволом распределённая сеть VPN

Reading time 3 min
Views 51K
Information Security *System administration *Network technologies *Distributed systems *
FAQ

Сегодня речь пойдёт о технологии распределённой сети VPN Gate, своего рода недруга Поднебесной в области интернет цензуры. На Хабре много статей на тему SoftEther VPN (нижележащий слой VPN Gate), но нет ни одной технически всесторонней статьи про саму распределённую сеть и такое чувство, что в рунете про неё вообще забыли.

VPN Gate — академический эксперимент Дайу Нобори. Проект представляет собой интернет-сервис научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальных распределенных открытых ретрансляторов VPN».

Отличительной особенностью данной сети является её функционирование в виде роя. То есть каждый желающий пользователь может поделиться своей пропускной способностью с другими. Я знаю, что вы подумали, очередной неудачный dVPN пиар на основе блокчейна.

Однако это не так, данный проект уже насчитывает 8634 узлов и 534 петабайта трафика за всё время существования. К примеру даже у TOR-а узлов — 7 тысяч.

Читать далее
Total votes 81: ↑80 and ↓1 +79
Comments 101

Взгляд программиста на гипотезу Коллатца

Reading time 4 min
Views 13K
Mathematics *
Поделюсь интересными результатами анализа одной маленькой, но интересной теоремы, гипотезы Коллатца.

Формулировка такая: вам даётся натуральное число. Если оно чётное, вы его делите на два, а если нечётное, умножаете на три и добавляете единицу. И так по кругу. Гипотеза состоит в том, что для натуральных чисел иной судьбы, чем скатиться в цикл 1->4->2->1 нет. То есть, предположение состоит в том, что не появится других циклов — и тем более, таких чисел, которые при такой обработке в среднем всегда только возрастают.

Как бы на это посмотрел бы программист? Прежде всего, целое число для него это набор бит. Количество бит у числа подсчитывается логарифмом по основанию 2, с округлением в меньшую сторону, плюс единица. Семь это три бита «111», восемь это уже четыре бита «1000». Двоичная система счисления — как будто у вас отобрали все цифры с 2 по 9, а числа обозначать надо. Сперва трудно, но привыкнуть можно.

Деление в этой системе на два — это сдвиг всей расстановки в правую сторону. Но проще это назвать стиранием последнего нолика.

В цикле обработки числа именно это и происходит — если число чётное, то есть, последний бит нолик, то он стирается. Если не цепляться за отдельные циклы обработки, можно сказать, стираются сразу все завершающие нули.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 4

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 7

Reading time 11 min
Views 18K
Python *Programming *Image processing *
Tutorial

На прошлом уроке мы изучили некоторые способы поиска областей интереса на изображении. Напомню, что мы делали:

пытались найти по цвету (чаще всего так делать не надо);

пытались найти круглый знак посредством функции HoughCircles (иногда работает);

а еще мы изучили морфологические операции (открытие закрытие).

Сегодняшний урок будет более глубоко посвящен работе с контурами, так как часто контур помогает выдели фичи на изображения, а так же области интересов (благодаря контуру, мы можем охватить форму объекта).

Для начала вспомним, как находить контуры.

Читать далее
Total votes 6: ↑5 and ↓1 +4
Comments 7

Применение научного подхода при решении задач в Data Science

Reading time 8 min
Views 3.6K
Первая грузовая компания (ПГК) corporate blog Machine learning *IT career Reading room

Привет! Меня зовут Евгений Мокшин, я занимаюсь аналитикой и машинным обучением в ПГК. Хочу рассказать, как можно применять научный подход при решении рабочих DS-задач. 

В большинстве статей, посвящённых правилам и советам по решению задач DS, рассказывается о подготовке, очистке и предварительной обработке данных, разновидностях задач и методов их решения. Из них можно узнать о том, как разработать модель, настроить гиперпараметры, выполнить перекрестные проверки. Как правило упор делается на технические аспекты. Знать и использовать все это, безусловно, важно. Однако для получения качественного результата DS-специалист также должен быть исследователем, уметь правильно ставить задачу, проводить обзор методов, выдвигать гипотезы и делать выводы. В этой статье я опишу свой взгляд на решение DS-задач и покажу, как научный подход поможет повысить его качество.

Читать далее
Total votes 8: ↑8 and ↓0 +8
Comments 3

Совершенный алгоритм. Основы

Reading time 1 min
Views 12K
Programming *Algorithms *Professional literature *

Книга "Совершенный алгоритм. Основы" Тима Рафгардена первая в серии из четырёх книг примерно одинакового размера. В сумме они примерно соответствуют часто цитируемой классике "Алгоритмы. Построение и анализ".

Читать далее
Total votes 22: ↑22 and ↓0 +22
Comments 9

В Data Science не нужна математика (Почти)

Reading time 6 min
Views 79K
RUVDS.com corporate blog Python *Big Data *Mathematics *Data Engineering *

Привет, чемпион!

Ребята с «вышкой» всё время умничают, что в Data Science нужна «математика», но стоит копнуть глубже, оказывается, что это не математика, а вышмат.

В реальной повседневной работе Data Scientist'а я каждый день использую знания математики. Притом очень часто это далеко не «вышмат». Никакие интегралы не считаю, детерминанты матриц не ищу, а нужные хитрые формулы и алгоритмы мне оперативнее просто загуглить.

Решил накидать чек-лист из простых математических приёмов, без понимания которых — тебе точно будет сложно в DS. Если ты только начинаешь карьеру в DS, то тебе будет особенно полезно. Мощь вышмата не принижаю, но для старта всё сильно проще, чем кажется. Важно прочитать до конца!
Читать дальше →
Total votes 143: ↑136 and ↓7 +129
Comments 87

Соглашения о вызовах

Reading time 3 min
Views 8.8K
Programming *Assembler *C *Reverse engineering *Development for Windows *

Это стандартизированные методы реализации и вызова функций.

Соглашение о вызовах опредяют как функция вызывается, как функция управляет стеком и стековым кадром, как аргументы передаются в функцию, как функция возвращает значения.

Читать далее
Total votes 15: ↑13 and ↓2 +11
Comments 11

Трансфер технологий в условиях санкций. Опыт Холодной войны

Reading time 12 min
Views 11K
FirstVDS corporate blog Reading room Popular science
Как вы все знаете, сейчас на дворе не лучшие времена для беспрепятственного распространения технологий, обмена научными достижениями и трансграничной торговли. Однако если заглянуть в прошлое, можно увидеть много интересного. Например, как британцы продали СССР реактивные двигатели «Нин» (для самолетов) от компании «Роллс-Ройс» в самом начале Холодной войны и невзирая на запрет США.


Читать дальше →
Total votes 67: ↑60 and ↓7 +53
Comments 13

Как сравнивать распределения. От визуализации до статистических тестов

Reading time 15 min
Views 22K
Skillfactory corporate blog Python *Programming *Mathematics *
Translation

В подробном лонгриде к старту курса по анализу данных вы найдёте авторские визуализации, пояснения и комментарии об искусстве сравнивать распределения и делать выводы.

Приятного чтения!
Total votes 8: ↑8 and ↓0 +8
Comments 4

Выбор графического движка (GUI) для встраиваемой электроники

Reading time 15 min
Views 19K
Programming microcontrollers *Circuit design *Manufacture and development of electronics *DIY Electronics for beginners

Наступили времена, когда графические дисплеи стали дешевле микроконтроллеров. Это привело к увеличению числа доступных графических движков для малой электроники. Вслед за этим обострилась проблема выбора.

В нашем полифункциональном заряднике есть небольшой графический дисплей. Разберём что тут можно подобрать. 

Читать далее
Total votes 46: ↑46 and ↓0 +46
Comments 39

Обратные простые числа сквозь призму систем счисления

Reading time 7 min
Views 4.6K
Mathematics *Popular science

В данной статье речь пойдёт о full reptend простых числах. Множество анимированных визуализаций и сонификации прилагаются. (Осторожно трафик)

Читать далее
Total votes 24: ↑24 and ↓0 +24
Comments 16

Антипаттерны в написании учебных пособий или откуда растут ноги плохого кода?

Reading time 12 min
Views 14K
Perfect code *Mathematics *Studying in IT
Sandbox

Работа с плохим кодом лично у меня вызывает отвращение и — по правде говоря — ещё и неприличные мысли в отношении того, кто его писал. Сейчас я уверен, что кроме программистов проблему плохого написания по-настоящему не понимает никто, хотя эта проблема есть не только у нас. В этой статье я покажу это на примере учебных пособий по математике. Не в них ли рождается склонность к отвратительному коду, ведь математику проходили все?

Статья будет полезна разработчикам, которым пришло распоряжение написать документацию к ПО, а также авторам учебных пособий вузов. Я не питаю иллюзий, что ситуация как-то изменится что у первых, что у вторых, но помечтать всё же хочется.

Важно: пример из статьи не является вымыслом или шуткой!

Ещё важней: статья не является критикой математики, математику я люблю.

Мучаемся вместе
Total votes 45: ↑32 and ↓13 +19
Comments 56

Как с помощью Python создать приложение для расшифровки речи в реальном времени

Reading time 6 min
Views 15K
Skillfactory corporate blog Website development *Python *Programming *Voice user interfaces *
Tutorial
Translation

Научить ИИ разговаривать шёпотом — непростая задача даже сегодня. Но мы покажем, насколько простыми стали распознавание и транскрипция речи, по крайней мере, на поверхности. Интересно? Тогда добро пожаловать под кат.

Читать далее
Total votes 12: ↑8 and ↓4 +4
Comments 15

Регулярные выражения (regexp) — основы

Reading time 21 min
Views 566K
IT systems testing *Regular expressions *

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее
Total votes 59: ↑51 and ↓8 +43
Comments 70

Генерация лабиринтов: алгоритм Эллера

Reading time 6 min
Views 19K
C++ *Algorithms *
Sandbox

Привет, Хабр!

Сегодня я хотел бы рассказать о генерации идеального лабиринта - алгоритмом Эллера. Статья подойдёт всем любителям алгоритмов.

Читать далее
Total votes 51: ↑51 and ↓0 +51
Comments 10

Information

Rating
3,565-th
Location
Челябинская обл., Россия
Registered
Activity