Все потоки
Поиск
Написать публикацию
Обновить
174.32

Алгоритмы *

Все об алгоритмах

Сначала показывать
Порог рейтинга
Уровень сложности

Разбираемся с рекурсией на примере связных списков

Время на прочтение10 мин
Количество просмотров5.7K
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рекурсией на примере связных списков.
Разбираемся с рек-ОШИБКА: ПЕРЕПОЛНЕНИЕ БУФЕРА

image
Матрёшка в разобранном виде
Читать дальше →

Бухучёт для программистов

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров8.9K

Любому образованному человеку непременно нужно иметь общее представление о бухгалтерском учёте. Так же, как и математика, естественные науки, программирование, музыка, литература, история, да и много чего ещё, бухучёт — это одна из тех сфер знаний, которые помогают нам понимать этот мир. Хотя работа с деньгами — не особо увлекательное занятие, это — неотъемлемая часть жизни, поэтому вполне можно уделить некоторое время на то, чтобы в этом разобраться.

Я полагаю, что, к сожалению, большинство бухгалтеров совсем не умеют понятно рассказывать о том, чем они занимаются, объяснять это другим людям. Бухучёт — это область, полная жаргона, акронимов, странных терминов, пришедших из глубины веков. Да у меня даже от книги «Бухучёт для чайников» кружится голова. А на самом деле, наверняка, всё это не может быть таким уж сложным.

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

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

Читать далее

Моделирование лесных пожаров: теория, клеточный автомат на Python

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8.8K

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

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

?

Градиентный спуск простыми словами

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров68K

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

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

Читать далее

Решаем задачу заливки однородной области

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.8K

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

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

Работает она очень просто: необходимо выбрать желаемый цвет заливки и кликнуть указателем мыши на нужную область изображения. В результате выбранный регион изменит цвет на указанный. Этот механизм реализуется специальным алгоритмом, который носит название «метод „наводнение“», или, по-английски, flood fill. 

В этой статье мы возьмём интересную задачу с собеседования, которую можно решить при помощи алгоритма flood fill, разберём её и познакомимся с несколькими вариантами решения. В этом поможет Евгений Бартенев, техлид и автор курса «Python-разработчик» в Яндекс Практикуме.

Читать далее

Сегрегация общества: модель Шеллинга и распределение этнических групп в городах Израиля

Уровень сложностиСложный
Время на прочтение27 мин
Количество просмотров4.5K

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

В модели каждый агент принадлежит к одной из двух групп и стремится жить в районе, где доля "друзей" достаточно высока: выше определенного порогового значения F. В зависимости от F, для групп равного размера, модель проживания по Шеллингу сходится либо к полной интеграции (случайное распределение), либо к сегрегации. Изучение этнических жилых моделей израильских городов с высоким разрешением показывает, что реальность сложнее, чем эта простая дихотомия интеграции-сегрегации.

?

Почему освоить Python невозможно, и почему это нормально | Pydon't

Время на прочтение10 мин
Количество просмотров38K
image

Фото Migle Siauciulyte на Unsplash

Введение


Говорят, что для овладения каким-либо навыком необходимо 10 000 часов. Я не буду спорить, правда это или нет. Я скажу вам, что даже если это правда, я не уверен, что это применимо к Python!

В этой статье я объясню, почему я считаю, что вы не можете по-настоящему освоить Python, но я также скажу вам, почему я считаю, что это нормально. Я дам ряд практических советов, которые вы сможете использовать, чтобы постоянно совершенствовать свои знания Python.
Наконец, в конце я поделюсь небольшим случаем из моего личного опыта работы с Python, подкрепляющий мои тезисы.
Читать дальше →

Меры центральности в Network Science

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7K

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

Меня зовут Сергей Коньков, я Data Scientist и участник профессионального сообщества NTA. За последние 10 лет интерес к науке Network Science неимоверно возрос, что повлекло за собой закономерное развитие всевозможных инструментов для исследований в данной области. Одним из таких инструментов является python‑библиотека NetworkX, предназначенная для анализа графов или других сетевых структур. Этот пост будет направлен на объяснение и демонстрацию работы основных мер центральности, вычисляемых в графах.

Читать далее

Что может быть проще (сложнее), чем упорядочивание чисел?

Время на прочтение9 мин
Количество просмотров7.2K

Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор <=. Вот пример на Python:

>>> "120" <= "1132"
False

Сравнение двух чисел на Brainfuck оставим в качестве упражнения для читателя.

Ой. Ну, строго говоря, это строки, а не числа, а строки обычно сортируются лексикографически. Но это всё-таки числа, хотя и представленные в виде строк. Это может показаться глупым, но такая проблема очень распространена в интерфейсах пользователя, например, в списках файлов. Именно поэтому нужно отбивать числовые имена файлов нулями (frame-00001.png) или использовать описания, сохраняющие лексикографический порядок, например, ISO 8601 для дат.

Впрочем, я отклонился от темы. Предположим, числа действительно представлены числовыми типами. Тогда всё просто и <= отлично работает:

>>> 120 <= 1132
True

Но так ли это?
Читать дальше →

Величайшие программисты XXI века. Юрки Алакуйяла — гений сжатия

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров19K
Пару дней назад на Хабре обсуждали, что сжатие информации — главная концепция нашей жизни. И вот перед нами представитель этой самой индустрии. Человек, который видит мир через призму теории информации, энтропии, хаоса и закономерностей.

Мало кто слышал имя Юрки Алакуйяла (@jyzg), но все мы используем его разработки. Картинки JPEG частенько генерируются фантастическим JPEG-энкодером guetzli с применением психовизуальных моделей, а HTTP-трафик в интернете жмётся кодеком brotli, тоже лучшим в своём классе.

Д-р Юрки Алакуйяла — активный член опенсорсного сообщества и исследователь. Работает техлидом Google Research Europe (Швейцария). Среди последних разработок — алгоритмы сжатия JPEG XL, WebP lossless и др.
Читать дальше →

Предсказательная вычислительная гидродинамика

Время на прочтение6 мин
Количество просмотров6.2K

Новый подход в моделировании температурных полей ядерных реакторов

Читать далее

Визуальный язык ДРАКОН: математические истоки алгоритмической макроконструкции «силуэт» и метод Ашкрофта-Манны

Время на прочтение6 мин
Количество просмотров3.3K

В статье описан теоретический метод, позволяющий прояснить математические истоки алгоритмической макроконструкции силуэт.

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

Читать далее

5 лайфхаков Python, которые сделают ваш код более читабельным и элегантным

Время на прочтение3 мин
Количество просмотров32K

Привет, Хабр! В этой статье я продемонстрирую 5 трюков Python на понятных для новичков примерах, которые помогут вам писать более элегантный Python код в вашей повседневной работе.

Читать далее

Ближайшие события

Сортировка слиянием — не так просто, как кажется

Время на прочтение20 мин
Количество просмотров33K

В одной конторе соискателю на позицию Senior C# developer выдали тестовое задание: отсортировать файл со строками определенного формата.

Требования такие:

* Формат строки: число, точка, пробел, далее любые символы до конца строки.

* Порядок сортировки — сначала сортируем текстовой части строки, потом по числу если текстовые части совпадают.

* Кодировка — UTF-8.

* Размер файла — 100гб - гарантированно больше объема ОП.

Должно отработать за 1 час на машине проверяющего, вряд ли там будет супер-быстрый SSD и огромное количество оперативной памяти.

Как и многие другие программисты, узнав о таком тестовом задании, я возмутился. Внешнюю сортировку слиянием практически всех проходили в ВУЗе, но практически никто никогда не писал её. Задача очень непрактическая и непонятно какие навыки проверяет. Так мне казалось.

Эта задача вызвала бурные обсуждения о способах её решения. Многие программисты, причисляющие себя к рангу senior, предложили использовать базы данных, ибо не барское это дело - вручную писать алгоритмы сортировки. Некоторые даже попытались сделать решение на Apache Spark. Однако никто до конца задачу не решил, ибо мало кому удалось отсортировать в нужном порядке даже 10ГБ файл менее чем за 15 минут без SSD.

Я подумал, что стоит решить задачу до конца с помощью программирования, и тоже причислить себя к рангу senior developer.

Читать далее

FSI: метод калибровки FTM с использованием информации о физическом уровне Wi-Fi

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1.7K

Статья «FSI: A FTM Calibration Method Using Wi‑Fi Physical Layer Information» опубликована во 2-й части материалов 17-й Международной конференции по беспроводным алгоритмам, системам и приложениям, которая прошла в Даляне, Китай, с 24 по 26 ноября 2022 г. (Wireless Algorithms, Systems, and Applications; WASA 2022) и посвящена определению местоположения источников Wi‑Fi в помещениях.

Аннотация. В стандарте IEEE 802.11–2016 имеется протокол точного измерения времени (Fine Time Measurement, FTM), который предназначен для точного определения местоположения Wi‑Fi‑устройств. Хотя FTM предполагает измерение расстояния в условиях прямой видимости (Line‑Of‑Sight, LOS) с точностью до нескольких метров, эффекты отсутствия прямой видимости (Non‑line‑Of‑Sight, NLOS) и многолучевости радиосигнала приводят к резкому снижению заявленной точности. В данной статье представлены результаты подробного исследования взаимосвязи между ошибкой измерения времени по протоколу FTM и откликом многолучевого канала, которое построено на детальном анализе информации физического уровня, обладающей более высоким временны́м разрешением. На основе данного исследования предлагается FSI — метод калибровки ошибок FTM с использованием информации физического уровня, который может автоматически определять характеристики окружающей среды и рассчитывать длины траекторий распространения радиосигналов. Также в статье описан разработанный авторами метод оптимизации, основанный на перемещениях пользователей, позволяющий дополнительно повысить точность определения местоположения в реальных условиях. Экспериментальные результаты показывают, что метод FSI повышает точность измерения расстояний на 24,80% и точность определения местоположения на 28,45%.

Читать далее

Революционный метод сжатия изображений

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров24K

Всем привет! Курс компьютерной графики в том или ином виде присутствует в образовательной программе любой ИТ-специальности. В числе прочего там обязательно проходят форматы графических файлов и затрагивают алгоритмы сжатия изображений. Сегодня я расскажу о новом, современном методе сжатия изображений, который ещё не вошёл ни в один учебник.
Читать дальше →

MIDV-2020: как мы создали крупнейший датасет  документов, удостоверяющих личность

Время на прочтение8 мин
Количество просмотров5.3K

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

Читать далее

Как Chat GPT повлияет на текущую систему образования?

Время на прочтение5 мин
Количество просмотров19K

Чтобы ответить на данный вопрос, я решил воспользоваться алгоритмами chat gpt для решения достаточно простой задачи по программированию на python. Данная задача была взята из курса ВШЭ по python, и, я полагаю, что её уровень сложности сопоставим с лабораторной работой по информатике на 1 курсе ВУЗа. Вполне вероятно её использование и в обучении на популярных онлайн-курсах. Данная задача была выбрана, как реальный пример для обучения Python. Понятно, что для опытных программистов данная задача покажется легкой прогулкой.

Читать далее

Книга «Computer Science для программиста-самоучки. Все что нужно знать о структурах данных и алгоритмах»

Время на прочтение12 мин
Количество просмотров24K
image Как дела, Хаброжители?

Книги Кори Альтхоффа вдохновили сотни тысяч людей на самостоятельное изучение программирования.

Чтобы стать профи в программировании, не обязательно иметь диплом в области computer science, и личный опыт Кори подтверждает это: он стал разработчиком ПО в eBay и добился этого самостоятельно.

Познакомьтесь с наиболее важными темами computer science, в которых должен разбираться каждый программист-самоучка, мечтающий о выдающейся карьере, — это структуры данных и алгоритмы. «Computer Science для программиста-самоучки» поможет вам пройти техническое интервью, без которого нельзя получить работу в «айти».

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

Введение в нечёткую логику

Время на прочтение9 мин
Количество просмотров32K
image

Вы когда-нибудь подумывали написать такой алгоритм, в соответствии с которым приложение само принимало бы решения, либо справлялось с какими-нибудь странными действиями, при помощи которых клиент отчаянно пытается его сломать?

Создавая такой алгоритм, вы заметите, что просто замусориваете ваш код логикой if-else (пока он не превратится в кашу), а самим вам начинает казаться, что вот так просто не прокатит.

Итак, если только вас не пробирает дрожь от математики – читайте дальше. Здесь в дело вступает нечёткая логика! Немного контекста: слово «нечёткий» (англ. «fuzzy») в данном случае означает «труднопонимаемый» — таков может быть, например, код вашего коллеги.

В этом посте я постараюсь объяснить нечёткую логику и объяснить, как она работает.
Читать дальше →

Вклад авторов