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

Алгоритмы *

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

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

Верификация распределённых систем с применением Isabelle/HOL

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

Мы ежедневно пользуемся распределёнными системами (в форме интернет-сервисов). Эти системы очень полезны, но и реализовывать их непросто, так как сети непредсказуемы. Всякий раз, когда вы передаёте сообщение по сети, предполагается, что оно прибудет очень быстро, но возможны и достаточно долгие задержки. Может случиться так, что сообщение не прибудет вообще, либо прибудет несколько раз. Когда вы отправляете запрос другому процессу и не получаете отклика, вы понятия не имеете, что произошло: потерялся ли запрос, либо тот другой процесс аварийно завершился, либо сам отклик потерялся? Или же на самом деле ничего не потерялось, сообщение просто задержалось и ещё может прибыть. Невозможно доподлинно узнать, что произошло, поскольку ненадёжный обмен сообщениями – единственный способ межпроцессной коммуникации.
Читать дальше →

Применение формулы бинома для определения простых чисел

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

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

Читать далее

Алгоритмы поиска пути: Алгоритм дейкстры и А*

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


Автор статьи: Артем Михайлов

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

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

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

В этой статье мы сосредоточимся на двух популярных алгоритмах поиска пути — алгоритме Дейкстры и алгоритме A*. Оба алгоритма имеют свои преимущества и недостатки, и выбор между ними часто зависит от конкретной задачи и условий ее выполнения.
Читать дальше →

Визуализация реальных масштабов проклятия размерности

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

Представьте себе набор данных, состоящий из некоторого количества наблюдений. У каждого наблюдения имеется N признаков. Если преобразовать все эти признаки в их числовое представление, то можно будет сказать, что каждое из наблюдений — это точка в N‑мерном пространстве.

Если N — величина небольшая — взаимоотношения между точками будут именно такими, какими их можно представить на интуитивном уровне. Но иногда N достигает огромных значений. Это может произойти, например, когда множество признаков создают посредством прямого кодирования или чего‑то подобного. Для очень больших значений N наблюдения ведут себя так, как если бы они были бы представлены разреженными данными, или так, как если бы расстояния между ними были бы несколько больше, чем можно было бы ожидать.

Это — реальное явление. По мере роста N, при условии, что всё остальное не меняется, объём части N‑мерного пространства, содержащий наблюдения, тоже, в некотором смысле, увеличивается (или, как минимум, увеличивается количество степеней свободы). Увеличиваются и евклидовы расстояния между наблюдениями. Группа точек становится всё более разреженной структурой. Это — геометрическая база для такого понятия, как «проклятие размерности». Подобные изменения в данных влияют на поведение моделей и на приёмы работы, применяемые к наборам данных.

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

Читать далее

Вышел Savant 0.2.4: компьютерное зрение на базе глубокого обучения для Nvidia Jetson и dGPU

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

После месяца напряженной работы мы выпустили новую версию Savant (0.2.4), с новыми функциями и примерами использования.

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

Savant построен на базе DeepStream и предоставляет высокоуровневый уровень абстракции для быстрой разработки конвейеров компьютерного зрения на базе Nvidia DeepStream.

Читать далее

Алгоритмы на FPGA: Алгоритм Луна

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

ПЛИС-культ привет, хабрунити!

Задумывались ли вы когда-нибудь над тем, что может быть общего у банковской карточки, IMEI телефона и вагона РЖД? В этой статье вы найдете ответ на этот вопрос и увидите его реализацию для ПЛИС.

Читать далее

Как приручить Polygon или обратная сторона олимпиад

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

Создаем олимпиадную задачу от начала и до конца: использование системы Polygon на реальном примере. Подходит как для новичков, так и для тех, кто уже имеет опыт, но все ещё пишет тесты сам и не знаком с FreeMarker.

Читать далее

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

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

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

Читать далее

Синтез обучения с подкреплением и классического планирования: как выиграть соревнование CVPR Habitat Challenge 2023

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

Всем привет! Меня зовут Алексей Староверов, работаю научным сотрудником в AIRI и в составе нашей команды (вместе с Кириллом Муравьевым, Татьяной Земсковой, Дмитрием Юдиным и Александром Пановым) мы выиграли соревнование Habitat Challenge, которое проводилось в рамках крупнейшей конференции по компьютерному зрению CVPR 2023. Мы смогли эффективнее других команд научить робота навигироваться до целевых объектов в новых помещениях с использованием только RGB-D камеры, датчика GPS и компаса. Сейчас это является очень важной задачей при создании роботов-помощников, выполняющих задачи по инструкциям на естественном языке. В этой заметке я расскажу, как это у нас получилось.

Читать далее

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

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

Однажды я зашла на LeetCode, одну из популярных платформ для решения алгоритмических задач. Сразу уточню: мне не нужно было готовиться к собеседованию, и моя работа не требовала продвинутого знания алгоритмов. Тем не менее я заметила, что у меня стали заполняться пробелы в знаниях, и я продолжила решать задачи — каждый день понемногу.

С тех пор у меня накопилось более 400 решённых задач на LeetCode. Теперь я уверена, что такие платформы как LeetCode, HackerRank или CodeWars, при правильном подходе, способны поднять профессиональные навыки любого разработчика на новый уровень.

Читать далее

Разработка расширяемого алгоритма строкового калькулятора

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

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

Читать далее

Камера, нейронки и дымящийся микро-ПК: дешевая и практичная альтернатива радару

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

В этом посте мы расскажем, как дошли до идеи отказа от использования радара при фотовидеофиксации нарушений. А также о том, как: подружили камеры с сверточными нейросетями, научили эту дружную «компанию» отличать грузовики от легковушек, точно фиксировать скорость и направление движения, а заодно засекать проезды на красный свет.

Читать далее

Рекурсивная генерация подземелий на Godot 4.1

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

В данной статье рассмотрим способ процедурной генерации подземелий, с помощью рекурсивную функцию на Godot 4.1.

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

Читать далее

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

Прибытие тензорного поезда. Как достижения мультилинейной алгебры помогают преодолеть проклятие размерности

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

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

Понятие «проклятие размерности» появилось в середине прошлого века в пионерской работе Ричарда Беллмана, посвященной методам решения сложных задач путём разбиения их на более простые подзадачи. Сегодня оно понимается в более общем смысле, а именно как экспоненциальный — O(nd) — рост количества необходимых данных и, как следствие, количества памяти, необходимой для их хранения, с ростом размерности пространства d. Когда задачу можно свести к работе с многомерными массивами в общем случае комплексных чисел, удобно говорить о d-мерных тензорах и использовать достижения мультилинейной алгебры. Хорошая новость заключается в том, что там существует такая процедура, как тензорное разложение, которое в ряде случаев может помочь преодолеть проклятие размерности.

Читать далее

Не так безопасен OpenPGP как его малюют

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

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

О чём собственно речь?

Тестируем на реальных кейсах Chatgpt Code Interpreter

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

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

Я протестировал новый плагин Code Interpreter на реальных задачах в бизнесе и остался приятно удивлён.

Посмотреть кейсы применения

Почему работает алгоритм преобразования инфиксной записи в постфиксную

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

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

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

Читать далее

Как работает хэширование

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

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

Хэш-функции фундаментальны и используются повсюду.

Но что же такое хэш-функции и как они работают?

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

Генерируй, дискриминируй. Как мы ускорили доменную адаптацию GAN для генерации лиц в пять тысяч раз

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

Всем привет! Меня зовут Айбек Аланов. Я — аспирант факультета компьютерных наук ВШЭ, а также научный сотрудник группы «Вероятностные методы машинного обучения» AIRI. Сегодня мне хотелось бы поделиться с вами успехами, которые добилась наша научная группа в вопросе адаптации генеративно-состязательных сетей на новые домены.

Читать далее

Генерация Лабиринта | Алгоритм Эллера

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

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

Читать далее

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