Search
Write a publication
Pull to refresh
40
0
sysprg @sysprg

User

Send message

Алгоритм Форда–Фалкерсона: как найти максимальный поток в сети (для начинающих)

Reading time7 min
Views1.2K

Привет, будущие инженеры и программисты! Сегодня мы разберём классический алгоритм Форда–Фалкерсона — дедушку всех алгоритмов максимального потока. Если алгоритм Диница — это современный спорткар, то Форд–Фалкерсон — это надёжная "классика", которая учит основам и помогает понять суть задачи.

Представьте, что вы владелец сети трубопроводов, и вам нужно понять, сколько воды можно прокачать из водохранилища в город. У каждой трубы есть максимальная пропускная способность, и вода может течь только в одном направлении. Ваша задача — найти такой способ распределения воды по трубам, чтобы в город попало максимальное количество воды. Это и есть задача максимального потока!

Читать далее

Простой ультразвуковой отпугиватель собак

Reading time8 min
Views7.5K

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

Зачастую, конечно, это заканчивается обычным «обгавкиванием» :‑В

Но, я‑то не знаю, что у них на уме...

Поэтому, приходится «обгавкивать» их в ответ, иногда даже применяя человеческие непечатные выражения, а, для убедительности своих слов, — взяв в одну руку «оружие пролетариата»:‑)

Тем не менее, хотелось бы и дальше носить маску культурного человека, не снимая её даже в такие моменты:‑) и я тут подумал: а что, если возложить задачу конверсейшена с собаками — на электронику?

Читать далее

Вы тоже заказываете платы, компоненты и всячину здесь?

Reading time11 min
Views31K

Что такое коллективный экспресс (7$/кг) и как его использовать?

Почему с 45$/кг бывает дешевле, чем с 23$/кг?

Как заказать компоненты/всячину с сайтов JLC (jlcfa, lcsc, jlcpcb, …)?

С 1688, Тао бао и других китайских площадок?

Привезти из Европы, США (Маузера, Диджикея и т. д.)?

Где платы с размерами >100х100 мм будут дешевле?

Надеюсь, продуманная навигация по статье и таблицы помогут быстро найти и сравнить полезную информацию.

Читать далее

Алгоритм Диница: как найти максимальный поток в сети (для начинающих)

Level of difficultyEasy
Reading time6 min
Views2.4K

Привет, будущие инженеры и программисты! Сегодня мы погрузимся в мир алгоритмов и разберём одну очень крутую штуку — алгоритм Диница. Звучит сложно? Не переживайте, мы разберём его по полочкам, как конструктор LEGO, и вы поймёте, как он помогает решать реальные задачи.

Представьте, что у вас есть город, и по его дорогам едут машины. У каждой дороги есть своя пропускная способность — сколько машин может проехать по ней за час. Ваша задача — понять, сколько всего машин может проехать из одной точки города (например, от завода) в другую (например, до торгового центра) за час, используя все дороги. Это и есть задача о максимальном потоке!

Читать далее

Прикладное руководство по настройке приёмников ГНСС для FPV

Level of difficultyMedium
Reading time12 min
Views3.4K

Привет, решил немного отвлечься от Java и поделиться своим опытом в любительском дроностроении, а именно в настройке приёмников ГНСС, с помощью которых птица сможет вернуться домой при обрыве сигнала или по крайней мере передать свои последние координаты. Это сильно облегчит поиск, особенно, если вы всё сделали правильно, передаёте координаты в телеметрии* и пишете их в лог в вашем пульте ;)

Полетели

Биполярный транзистор. Принцип работы

Level of difficultyMedium
Reading time12 min
Views7.9K

Есть множество материалов написанных о работе полупроводников и работе транзисторов.

Зачем еще одна?

Дело в том, что я заметил такую тенденцию в вузовских учебниках – довольно подробное описание работы p-n перехода и очень поверхностное описание работы биполярного транзистора. Зачастую «механика» работы такого транзистора описывается довольно схематично (в совершенно неработоспособном виде) и далее следует быстрый переход на описание внешних параметров. Причем у этих же авторов описание «механики» работы полевого транзистора дается куда обширнее. Видимо, авторы учебников сами не очень «догоняют», как там все работает. И это не удивительно. Человечество вначале эры полупроводников пыталось повторить схему работы вакуумной лампы на полупроводниках, т.к. работа лампы достаточно логична. И собственно полевые транзисторы, в какой-то степени повторяют принцип работы вакуумных ламп. Но вот биполярный транзистор, хотя и был изобретен первым, но это было скорее случайное изобретение, а не осознанный путь к цели.

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

Если Вы задавали себе вопросы наподобие таких:

почему через коллекторный p-n переход, включенный в обратном направлении, течет ток, да еще и самый, что не на есть главный рабочий ток?

почему неосновные носители тока базы в биполярном транзисторе, вдруг стали вполне себе главными представителями тока?

Почему ток в базы через открытый эмиттерный p-n переход меньше тока через закрый коллекторный p-n переход?

Ну и совсем «подковыристый» вопрос. Почему при включении биполярного транзистора по схеме с общим эмиттером, когда транзистор полностью открыт (находится в режиме насыщения), напряжение на коллекторе становиться меньше напряжения базы? Ведь если смотреть на транзистор с точки зрения пирога n-p-n переходов (как рисуют в учебниках), то сумма падения напряжения на двух p-n переходах (открытом эмиттерном и закрытом коллекторном) должно быть больше напряжения на одном открытом эмиттерном переходе. А оно у нас меньше.

Ответы на эти вопросы под катом

Ускоряем валидацию UTF-8 в 10 раз (>10 ГБ/с): реализация алгоритма Lemire-Keiser на Go с ARM NEON

Reading time8 min
Views1.1K

UTF-8 валидация — одна из базовых операций при работе с текстом, которая выполняется миллионы раз в секунду в современных приложениях. Стандартная реализация в Go, хоть и корректная, далека от оптимальной по производительности. В этой статье расскажу, как мне удалось ускорить валидацию UTF-8 в 10 раз, используя SIMD‑инструкции ARM NEON и алгоритм из статьи «Validating UTF-8 In Less Than One Instruction Per Byte» Джона Кейзера и Дэниела Лемира.

Читать далее

Метод кросс-энтропии: простейшая эвристика для сложнейших задач

Level of difficultyEasy
Reading time22 min
Views3.1K
Сколько эвристик вы знаете? Муравьи, отжиг, генетика, рой частиц, пчелы, светлячки, кукушки, гуси, совы, летучие мыши, осьминоги, дельфины, киты, шимпанзе, гориллы, львы, слоны, гравитация, электромагнетизм, вода, музыка… количество эвристик уже давно перевалило за полсотни. Все они вдохновлены природными процессами и явлениями, что делает их наглядными и понятными.

Но есть и строго математические методы, например, Байесовская (регрессия Гаусовских процессов) или информационно-геометрическая. Однако, есть один математический метод, выделяющийся на фоне абсолютно всех эвристик своей невероятной простотой и гибкостью, которая оказывается незаменимой в решении самых сложных комбинаторных задач и задач стохастического программирования — это метод кросс-энтропии.
Читать дальше →

Неправильный Эффект Холла и странное поведение электрона в полупроводниках p-типа

Reading time4 min
Views1.9K

В данной заметке хотелось бы обратить внимание на Эффект Холла в полупроводниках p-типа. Хотя в вузовских учебниках говориться об эффекте Холла в таких полупроводниках, но ни слова не упоминается о том, что невозможно объяснить результат с точки зрения классической физики, если не сделать допущение о положительном носителя тока - «Дырке». Хотя, фактически носителями тока в полупроводниках остаются электроны.

Вообще эффект Холла в p-полупроводниках – это удивительное проявление квантового поведения электронов в макро-масштабе.

Читать далее

Пара слов об алгебре интервалов

Level of difficultyHard
Reading time10 min
Views4K

Интервалы, интервалы,‑ где тут лево, где тут право...

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

На практике однако встречаются и более сложные задачи. Допустим, например, что в некой гостинице есть два свободных номера. Но один свободен со 2-го по 5-е число, а второй - с 6-го по 10-е. Клиент интересуется, есть ли возможность поселения на 8 дней? Правильный ответ - "да, есть, но с переселением (лесенкой)". Для такого ответа программа должна уметь распознать, что интервалы [2, 5] и [6, 10] являются смежными , а значит, их можно сложить, получив общий доступный интервал [2, 10], длина которого (9) превышает запрашиваемый.

Другая более редкая, но и более интересная задача - определить область пересечения двух множеств интервалов. Сложность в том, что количество интервалов в сравниваемых множествах может быть произвольным. Программист, который умеет только в сравнения "на меньше/больше" (или даже в between), столкнется при реализации с трудностями формализации.

В данной статье мы сфокусируемся на выводе формулы пересечений множеств интервалов. Опираться будем на линейную алгебру и ее объекты - векторы и формы. Кому интересен в первую очередь итоговый результат, - могут сразу двигать в конец, не вникая в промежуточные выкладки.

Поехали!

Как недовольный инженер часовые пояса придумал

Reading time6 min
Views8.8K
Июльским вечером 1876 года один шотландский инженер опоздал на поезд. Обычный человек на его месте наверняка вычурно выругался бы и взял другой билет. Но Сэндфорд Флеминг решил, что виновато тут не расписание, а само человечество.

Люди, по его мнению, неправильно обращались со временем. А если что-то работает криво, то, значит, нужно сделать нормально. И уговорить всех жить по новым правилам.

image
«Нормально делай — нормально будет», С. Флеминг

Флеминга не зря зовут «отцом времени». Последствия его идеи мы ощущаем каждый раз, когда, например, берём билет на самолёт. Или пытаемся высчитать, что там в Петропавловске-Камчатском — уже полночь или ещё нет.

Потому что Флеминг изобрёл ни много ни мало часовые пояса. И, честно говоря, спасибо ему за это.
Читать дальше →

The Billiard Fractals

Level of difficultyHard
Reading time25 min
Views841


Complex systems often appear chaotic or incomprehensible, yet closer examination reveals that such complexity can frequently be reduced to a simple underlying mechanism. By systematically removing layers of emergent behavior, one can uncover a fundamental rule or equation from which the entire system originates.

Read more →

Радиолокационный радар — менее чем за 400 рублей: на базе esp32 и wi-fi

Reading time9 min
Views52K


Приходило ли вам в голову, что ваша любимая esp32 может использоваться в роли самого натурального радиолокационного радара?

Если не приходило, то добро пожаловать под кат, так как кое-кому это пришло:-))
Читать дальше →

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

Level of difficultyEasy
Reading time20 min
Views4.7K

Настройка оповещений для различных метрик не всегда представляет из себя тривиальную задачу. В некоторых случаях может быть вполне достаточно простого порогового значения, например, для отслеживания свободного места на диске устройства. Вы можете просто установить оповещение о том, что осталось 10% свободного места, и все готово. То же самое касается и мониторинга доступной памяти на сервере.

Однако что делать, если необходимо отслеживать поведение пользователей на веб‑сайте? Представьте, что вы управляете интернет‑магазином, где продаете товары. Одним из подходов может быть установка минимального порога для ежедневных продаж и проверка его раз в день. Но что, если вам нужно выявить проблему гораздо раньше, в течение нескольких часов или даже минут? Статичный порог не позволит этого сделать, так как активность пользователей может меняться в течение дня. Именно здесь на помощь приходит обнаружение аномалий.

Читать далее

К чему можно подключить MIPI DSI экран?

Level of difficultyMedium
Reading time6 min
Views5.8K


Как-то мне захотелось поэкспериментировать с MIPI DSI экранами. Встал вопрос: к чему их подключить? Позже я выбрал решение и спроектировал плату, о чём начал писать статью. Но есть и множество других вариантов. Решил вынести эти данные в отдельную часть.

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

Какие решения доступны? Как рассчитать скорость передачи данных?
Читать дальше →

Взрывы сверхновых изменили климат Земли и сформировали историю человечества

Level of difficultyEasy
Reading time5 min
Views1.4K

Большинство учёных согласны с тем, что взрывы сверхновых повлияли на климат Земли, хотя детали этого не совсем ясны. Скорее всего, они охлаждали климат несколько раз за последние несколько тысяч лет, как раз в то время, когда по всему миру зарождалось человечество. Доказательства видно в телескопы и по кольцам деревьев.

Мы живём в четвертичном периоде, который начался 2,58 миллиона лет назад и длится до наших дней. Четвертичный период характеризуется климатическими и экологическими изменениями, в первую очередь ледниковыми периодами. Четвертичный период также охватывает существование и эволюцию человека от ранних гоминид до нашего вида.

Читать далее

Программирование ESP32 с ESP-IDF в среде platformio #1

Level of difficultyMedium
Reading time8 min
Views4.4K

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

Это вторая статья из цикла по программированию ESP32 на ESP‑IDF. В первой части мы познакомились с базовой терминологией RTOS и реализовали несколько простых задач (tasks). Сегодня же мы перейдём к работе с GPIO и прерываниями (ISR), а заодно обсудим особенности настройки стека задач в ESP‑IDF (спасибо за совет @0x6b73ca).

Читать далее

Детальный обзор полей Галуа

Level of difficultyMedium
Reading time15 min
Views16K

"Попросите Якоби или Гаусса публично высказать своё мнение — не о истинности, а о важности этих теорем. Позже, я надеюсь, найдутся люди, которым будет выгодно разобраться во всём этом хаосе."

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

Заметка! Если вам довелось использовать/реализовывать поля Галуа, то большая часть статьи для вас скорее всего будет не интересна, но возможно в последних разделах будет что-то для вас новое.

Читать далее

Как прямая помогает обучать машины

Level of difficultyEasy
Reading time9 min
Views1.2K

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

Давайте начнём с чего-то близкого нам: цен на недвижимость. Большие дома стоят больше, маленькие — меньше. Подобный паттерн можно заметить даже без анализа: чем больше места, тем дороже.

Если создать график цен, то его форма будет очевидной: идущая вверх нечёткая кривая с долей шума, но вполне определённым трендом.

Взаимное движение цены и размера как будто предсказуемо. Однако оно не ограничено фиксированными шагами или категориями, их масштаб скользит. Дом может стоить 180 тысяч, 305 тысяч или иметь какую-то промежуточную цену.

Теперь представьте, что вы продаёте свой дом. Его площадь 1850 квадратных футов (~172 квадратных метра) — больше среднего, но явно не особняк. Вы видели, почём продаются дома в вашем районе, но цены колеблются. Какой будет справедливая цена?

Читать далее
1
23 ...

Information

Rating
Does not participate
Date of birth
Registered
Activity