Pull to refresh
4
0

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

Send message

Шахматы как динамическая система

Reading time4 min
Views6.9K
image

Предисловие


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

Очень давно, благодаря энтузиазму моего деда, я научился играть в шахматы. Вообще, шахматы — это одна из самых древних синтетических системных моделей, представленных в оболочке настольной игры. В данной статье будет произведен системный анализ шахмат, как детерминированной (предопределенной) системы, а именно: исследование структуры связанных шахматных фигур, интегративного свойства всех фигур и отдельных «изолированных» структур и уровня доминирования на доске как отдельных фигур, так и отдельного цвета (белых или черных).
Читать дальше →

Опыт поступления в магистратуру в Германии (детальный разбор)

Reading time62 min
Views96K
Я программист из Минска, и в этом году я успешно поступил в магистратуру в Германии. В данной статье я бы хотел поделиться своим опытом поступления, включая выбор подходящей программы, сдачу всех тестов, подачу заявок, коммуникацию с германскими вузами, получение студенческой визы, общежития, страховки и выполнение административных процедур по приезду в Германию.

Процесс поступления оказался гораздо более хлопотным, чем я ожидал. Я столкнулся с рядом подводных камней и периодически страдал от нехватки информации по ряду аспектов. В интернете (в т.ч. и на Хабре) уже выложено много статей на эту тему, но ни в одной из них, как мне показалось, не было изложено достаточно деталей для понимания всего процесса. В данной статье я постарался поэтапно и детализированно описать свой опыт, а также поделиться советами, предостережениями и своим личным впечатлением о происходящем. Я надеюсь, что, прочитав данную статью, вы сможете избежать ряда моих ошибок, будете более уверенно себя чувствовать в своей вступительной кампании, а также сэкономите немного времени и денег.

Эта статья будет полезна тем, кто планирует или начинает поступать в магистратуру в Германии по специальностям, связанным с Computer Science. Частично данная статья может быть полезна и поступающим на другие специальности. Читателям, не планирующим поступать куда-либо данная статья может показаться скучной из-за обилия всяких бюрократических подробностей и отсутствия фотографий.
Читать дальше →

Машина Тьюринга, как модель автоматных программ

Reading time18 min
Views26K

Машина Тьюринга, как модель автоматных программ


1. Введение


Программирование нуждается в новых универсальных алгоритмических моделях, а аппаратные средства реализуют алгоритмы не только в другой форме, но и на базе другой алгоритмической модели — автоматной. Заимствование технологии из сферы разработки аппаратных средств ключевая идея автоматного программирования. Однако синтез цифровых устройств отличается от программирования. Но, заимствуя модель, с одной стороны, ее не желательно существенно изменять, а, с другой стороны, нельзя не учитывать уже существующую теорию и практику программирования.

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

За основу обсуждения проблем автоматного программирования возьмем недавнюю лекцию Шалыто А.А. [1] и его «программные» статьи к определению парадигмы автоматного программирования [2, 3].
Читать дальше →

Клеточные автоматы в браузере

Reading time8 min
Views11K
image

Клеточный автомат — это система, состоящая из клеток с численными значениями в сетке, а также из правил, определяющих поведение этих клеток. Многократно применяя правило к каждой клетке сетки параллельно с визуализацией сетки, часто можно получить эффект некоего эволюционирующего организма со сложным и замысловатым поведением, даже если правила относительно просты.

Клеточные автоматы имеют различные формы, виды и размерности. Наверно, самым знаменитым клеточным автоматом является конвеевская игра «Жизнь» (Conway's Game of Life, GOL). Она состоит из двухмерной сетки, в которой каждая клетка содержит двоичное значение (живая или мёртвая). Сопутствующие правила на основании состояния соседних клеток определяют, должна ли клетка быть мёртвой или живой. Правила гласят, что живая клетка умирает от одиночества, если вокруг неё меньше 2 живых клеток. Если живы больше трёх соседних клеток, она погибает от перенаселённости. Другими словами, клетка «выживает», если вокруг неё ровно 2 или 3 живых соседних клеток. Чтобы мёртвая клетка ожила, у неё должно быть ровно 3 живых соседних клеток, в противном случае она остаётся мёртвой. Пример автомата GoL, итеративно проходящий несколько состояний, показан ниже.

Game of Life

Ещё один знаменитый вариант клеточного автомата одномерен; он называется элементарным клеточным автоматом (Elementary Cellular Automaton, ECA). Именно его мы реализуем в этом посте.
Читать дальше →

52 датасета для тренировочных проектов

Reading time5 min
Views152K
  1. Mall Customers Dataset — данные посетителей магазина: id, пол, возраст, доход, рейтинг трат. (Вариант применения: Customer Segmentation Project with Machine Learning)
  2. Iris Dataset — датасет для новичков, содержащий размеры чашелистиков и лепестков для различных цветков.
  3. MNIST Dataset — датасет рукописных цифр. 60 000 тренировочных изображений и 10 000 тестовых изображений.
  4. The Boston Housing Dataset — популярный датасет для распознавания паттернов. Содержит информацию о домах в Бостоне: количество квартир, стоимость аренды, индекс преступлений.
  5. Fake News Detection Dataset — содержит 7796 записей с разметкой новостей: правда или ложь. (Вариант применения с исходником на Python: Fake News Detection Python Project )
  6. Wine quality dataset — содержит информацию о вине: 4898 записей с 14 параметрами.

Читать дальше →

Вариация на тему моделирования жизни. Часть 2

Reading time5 min
Views2.6K

Жизнь продолжается


Продолжим эксперименты с клеточным автоматом, начатые в предыдущей статье (Вариация на тему моделирования жизни. Часть 1).
Вкратце напомним основные положения. Модель представляет собой бесконечное (замкнутое) поле, состоящее из клеток. В каждой клетке может располагаться только один простейший организм, который условно назовём растением. Изначально поле может содержать в каждой клетке некоторое количество ресурса, необходимое для питания растений.

Наделим растение со следующими параметрами: a) начальная масса (в единицах), b) питание ресурсом (в единицах), c) продолжительность жизни (в тактах), d) количество спор для размножения.
Читать дальше →

Вариация на тему моделирования жизни. Часть 1

Reading time5 min
Views8.4K

Жизнь Джона Конвея


Полагаем, всем программистам хорошо известен клеточный автомат жизнь (или эволюция), придуманный английским математиком Джоном Конвеем в 1970 году. Возможно, некоторые даже корпели над самописной программой, моделирующей клеточный автомат Конвея.
Читать дальше →

История Vim и руководство по его эффективному использованию

Reading time14 min
Views52K
Примечание от переводчика: это первая часть монументальной (на самом деле монументальной) статьи о Vim и его возможностях от разработчика из Миннеаполиса и автора проекта PostgREST Джо begriffs Нельсона.

Первая часть статьи отводится на знакомство с историей Vim как редактора и автор рассказывает ряд интересных фактов и о возможностях Vim. Во второй части перевода будут сконцентрированы все фишки и лайфхаки, которыми Джо решил поделиться с аудиторией, там повествование, как таковое, затухает и остается лишь набор руководств к действию. Так как оригинал текста обладает совершенно неприемлемыми габаритами, мы разделили эту историю на две примерно равные по размерам статьи. Сегодня — первая из двух публикаций. Приятного чтения.




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



Список литературы


Чтобы выйти за границы привычных тем, я бы порекомендовал обзавестись бумажной копией этого руководства и емким карманным справочником. Я не смог найти печатную копию руководства пользователя для Vim, так что в итоге просто распечатал идущий вместе с редактором PDF-файл с помощью printme1.com. Он идет вместе с софтом в $VIMRUNTIME/doc/usr_??. В качестве удобного списка команд могу посоветовать справочник «Vi and Vim Editors Pocket».

Содержание

  • История
  • Иерархия конфигурации
  • Сторонние плагины
  • Бекапы и откаты
  • Include и path
  • Редактирование и компиляция цикла
  • Диффы и патчи
  • Буфер ввода / вывода
  • Типы файлов
  • Не забывайте про мышь
  • Разное

История


Рождение vi


Команды и функции Vi существуют уже более пятидесяти лет, начиная с редактора QED. Вот его таймлайн:
Читать дальше →

Простые числа — насколько велико наше бессилие?

Reading time9 min
Views45K
Представьте, что вас окружает бесконечно высокая стена, а о том, что находится за стеной абсолютно ничего неизвестно. Теперь представьте, что олицетворением данной стены является вот это уравнение:

image

Эту метафору будет проще понять, если провести аналогию с черной дырой: мы не знаем, что находится под ее горизонтом событий, и чтобы это узнать нам нужно придумать способ, как туда добраться. Нечто подобное существует в мире математики. Данное уравнение — это настоящая «формула» простого числа, но чтобы ею пользоваться, нам нужно придумать, как искать подходящие {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, w, v, x, y, z}.

Черная дыра и данное уравнение — это предельные состояния чего-то реального и абстрактного. И, если о первом существует достаточно догадок и представлений, то о втором, практически ничего не известно. Но, что если это действительно «математическая» черная дыра? Разве вам не интересно что может произойти, если мы попадем под горизонт?
Под горизонт.

Ханнес Линдеманн против Алена Бомбара: развенчание мифа?

Reading time5 min
Views3.8K
Ален Бомбар, французский врач, который на надувном плоте совершил переход из Европы в Америку, упоминался в предыдущей истории. Трагедия на гряде Этель, где при испытаниях надувного плота, в которых участвовал Бомбар, унесла жизни девяти человек. Сам он остался жив. Причины случившегося – совпадение различных неблагоприятных обстоятельств.

У меня сложилось мнение о том, что Бомбар не был непосредственно виноват в случившемся. Спасательный катер сопровождения не был пригоден для участия в испытаниях. Возможно, что некоторые из тех, кто оказался в воде после опрокидывания плота и перебрались на катер, сняли спас-жилеты (об этом упоминалось по-русски, правда, оригинального источника я не нашел.) А затем уже и катер перевернулся.

Немецкий врач Ханнес Линдеманн знал о переходе Алена Бомбара через Алантику. Сам Линдеманн – довольно опытный яхтсмен и каякер, принял достижение Бомбара как вызов.
Читать дальше →

Ко дню рождения Юрия Кнорозова: изучаем основы письменности Майя

Reading time11 min
Views46K

Письменность майя была единственной полноценной системой письменности в Америке, но благодаря стараниям отважных испанских конкистадоров к XVII веку она была полностью забыта. Тем не менее, тысячи этих символов сохранились на резных камнях, фресках и керамике, и в XX веке обычный советский аспирант выдвинул идею, которая позволила их расшифровать. И данная статья покажет, как устроена эта система.
Читать дальше →

5 способов полезного использования Raspberry Pi. Часть третья

Reading time4 min
Views76K
Привет, Хабр.

Во второй части были рассмотрены 5 способов использования Raspberry Pi. И как оказывается, этот микрокомпьютер способен ещё на большее. Сейчас мы рассмотрим еще 5, надеюсь, не менее интересных возможностей Raspberry Pi.



Как и в предыдущей части, будут рассмотрены способы, не требующие программирования.
Продолжение под катом.
Читать дальше →

Необычные системные вызовы на Linux

Reading time17 min
Views25K

ls /usr/share/man/man2/


Что видит программист, начиная работать с языком C? Он видит fopen, printf, scanf и ещё много других функций. Видит он и всякие open и mmap — казалось бы, зачем их выделять? Но, в отличие от первой группы, эти две функции при выполнении на ядре Linux являются системными вызовами (на самом деле нет, почти никогда системный вызов нельзя просто вызвать как функцию, и поэтому libc содержит обёртки, перепаковывающие аргументы и иногда, как в случае с тем же open, заменяющие старые системные вызовы более общими новыми). Вообще, в отличие от тысяч библиотечных функций, доступных на типичной GNU/Linux системе, интерфейс ядра имеет довольно ограниченное количество точек входа — порядка нескольких сотен, зато то, что для user space — crash (например, обращение к отсутствующей странице), для ядра — default mode of operation.


В этой статье я расскажу некоторые интересные на мой взгляд факты. В ней не будет futex-ов и прочих скучных (наверное) деталей реализации. Будет преимущественно то, что вызывало у меня реакцию «А что, так можно было?!?».

Читать дальше →

Краткий путеводитель по математике для иностранцев

Reading time25 min
Views28K


О чем это


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

Безумству храбрых поем мы песню!

Целевой аудиторией Путеводителя являются те, кто внезапно заинтересовался математикой или чувствует потребность повысить свою профессиональную эффективность, но по какой-либо причине не имеет возможности отдать несколько лет своей жизни академическому образованию. Если у вас возникла потребность разобраться, но фундаментальных знаний катастрофически не хватает, и вы чувствуете себя иностранцем в стране математики, где говорят на непонятном языке, попробуйте пройти этот путь в качестве туриста. Весь маршрут представляет собой обзорную экскурсию и рассчитан на несколько дней, максимум две недели. Для сравнения: полный академический курс составляет около пяти лет. Конечной целью предлагаемого маршрута является знакомство с принципами одного узкоспециального раздела — эллиптической криптографии. Однако до конца идти не обязательно, если этот раздел лежит вне сферы ваших интересов или вы столкнулись с серьезными трудностями или опасностями. Но, раз уж вы взяли в руки Путеводитель, всё же постарайтесь дойти хотя бы до конца раздела «Язык формул».


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


А теперь, зная, что царских дорог здесь нет, попробуем проложить хотя бы туристическую тропинку.

Читать дальше →

Synet — фреймворк для запуска предварительно обученных нейронных сетей на CPU

Reading time6 min
Views7.6K
мой велосипед

Введение


Здравствуйте, уважаемые хабровчане!

Последние два года моей работы в компании Synesis были тесно связаны с процессом создания и развития Synet — открытой библиотеки для запуска предварительно обученных сверточных нейронных сетей на CPU. В процессе этой работы мне пришлось столкнуться с рядом интересных моментов, которые касаются вопросов оптимизации алгоритмов прямого распространения сигнала в нейронных сетях. Как мне кажется, описание этих моментов было бы весьма интересным для читателей Хабрахабра. Чему я и хочу посвятить цикл своих статей. Продолжительность цикла будет зависеть от вашего интереса к данной теме ну и конечно же от моей способности побороть лень. Начать цикл хочется с описания самого велосипеда фреймворка. Вопросы алгоритмов, которые лежат в его основе будут раскрыты в последующих статьях:

  1. Сверточный слой: методы оптимизации основанные на матричном умножении
  2. Сверточный слой: быстрая свертка по методу Шмуэля Винограда

Читать дальше →

Миниатюрный электротехнический конструктор для детей своими руками

Reading time2 min
Views18K
Хотя я и создаю настольные игры, обучающие в том числе и основам электротехники, но я всегда рекомендую совмещать их с физическими деталями, проводами и макетными платами.

И поэтому я хочу представить вам конструктор размером с пластиковую банковскую карточку, который был разработан для ознакомления детей с простыми схемами, но достаточно необычным образом. Идея была сделать простоту уровня Знатока, но на макетных платах.

Введение в Bash Shell

Reading time14 min
Views141K
Всем привет. Это перевод из книги по подготовке к экзамену RedHat RHCE. На мой взгляд очень доступно рассказывается об основах bash.

Сценарии оболочки — наука сама по себе. Не вдаваясь в подробности всего, что происходит «под капотом», вы узнаете, как применять базовые элементы для написания собственных скриптов, и анализировать, что происходит в сторонних сценариях оболочки.


Читать дальше →

Математика раскрывает секреты обратной связи живых клеток

Reading time10 min
Views7.7K

Поддержание идеальной стабильности на основе отрицательной обратной связи – базовый элемент электрических контуров; однако до сих пор оставалось загадкой, как это удаётся делать живым клеткам.




Небольшой Lego-робот Мустафы Хаммаша увлечён игрой в гляделки с книгой, которую держат в 30 см перед ним. Хаммаш сдвигает книгу вперёд, и робот сразу же начинает жужжать своими четырьмя колёсами, чтобы следовать за ней; он придвигает книгу поближе, и робот отскакивает назад, оставаясь на расстоянии в 30 см от книги. Хаммаш прижимает машину очёшником, наклоняет стол под углом, заменяет колёса на другие, на 30% больше – и каждый раз робот восстанавливает буферную зону в 30 см между книгой, и вновь начинает смотреть на неё.

Странная способность робота подстраивать своё местоположение даёт ему то, что биологи называют устойчивой идеальной адаптацией. «Когда движение заканчивается, никаких ошибок не наблюдается, — сказал Хаммаш, специалист по теории управления из шведского государственного технологического института в Цюрихе. — Это идеальная адаптация; она идеально поддерживает расстояние».

Структуры данных для программистов игр: bulk data

Reading time19 min
Views17K
image

Любому программисту будет полезно понимание различных структур данных и способов анализа их производительности. Но на практике мне ни разу не пригождались АВЛ-деревья, красно-чёрные деревья, префиксные деревья, списки с пропусками, и т.д. Некоторые структуры данных я использую только для одного конкретного алгоритма и ни для чего больше (например, кучи для реализации очереди с приоритетом в алгоритме поиска пути A*).

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

  • Общие массивы данных (Bulk data) — способ эффективного хранения большого количества объектов.
  • Слабые ссылки (Weak reference) (или дескрипторы (handle)) — способ обращения к объектам в bulk data без сбоев программы в случае, если объект удалён.
  • Индексы — способ быстрого доступа к отдельным подмножествам в bulk data.
  • Массивы массивов — способ хранения объектов bulk data с динамическими размерами.

Я посвящу несколько статей тому, как я обычно реализую все эти структуры. Давайте начнём с простейшей и самой полезной — bulk data.
Читать дальше →

Information

Rating
7,218-th
Registered
Activity