Как стать автором
Обновить
228.24

Алгоритмы *

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

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

Лучшими кубитами для квантовых вычислений могут быть нейтральные атомы

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

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

В конце прошлого года технологический гигант IBM объявил о том, что может показаться важной вехой в квантовых вычислениях: о первом в мире чипе под названием Condor, содержащем более 1000 квантовых битов или кубитов. Прошло всего два года после того, как компания представила Eagle, первый чип с более чем 100 кубитами. Казалось, что эта область стремительно движется вперёд. Создание квантовых компьютеров, способных решать полезные задачи за рамками даже самых мощных классических суперкомпьютеров, требует ещё большего их масштабирования — возможно, до многих десятков или сотен тысяч кубитов. Но это ведь всего лишь вопрос техники, верно?

Читать далее
Всего голосов 8: ↑8 и ↓0+9
Комментарии0

Искусственный интеллект. Ч2

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

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

Понятия Естественный интеллект и Искусственный интеллект (ЕИ, ИИ от лат. intellectus - познание - понимание, рассудок), способность мышления, рационального познания, у человека – ЕИ, у робота – ИИ. ИИ можно определить как область компьютерной науки, занимающуюся автоматизацией разумного поведения неживых объектов. Здесь не будем оценивать и анализировать многочисленные другие определения ИИ и заострять внимание на предлагаемых разными авторами текстах, чтобы не застрять на этом. Понимание ИИ как системы, способной решать задачи доступные в прошлом только человеку, без всяких упоминаний эмуляции сознания, — также используется. И современные системы ИИ вполне этому определению отвечают.     

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

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

Читать далее
Всего голосов 12: ↑4 и ↓80
Комментарии1

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

Время на прочтение7 мин
Количество просмотров944

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

Читать далее
Всего голосов 2: ↑1 и ↓1+2
Комментарии3

Откуда Deezer знает, какая музыка нравится новым пользователям?

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

Привет, Хабр! Меня зовут Данил Картушов. 👋

В этом посте я расскажу, как музыкальная платформа Deezer, используя метаданные, с первых секунд научилась рекомендовать персонализированные треки новым пользователям!

▶️ Начнем!
Всего голосов 7: ↑4 и ↓3+2
Комментарии8

Истории

Как начать мыслить о ИИ

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

В этой статье я расскажу о своем представлении того, с чего можно начать мыслить о создании искусственного интеллекта (ИИ, цифрового интеллекта, ЦИ), даже если он будет очень простым. Здесь я привожу несколько идей, которые должны показать, как можно мыслить о ИИ по-другому, с точки зрения того, какими основными свойствами должна обладать интеллектуальная программа и с чего можно начать мыслить в направлении создания ИИ.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии4

Точное увеличение растровых изображений

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

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

Увеличим апскейл до максимума!
Всего голосов 14: ↑13 и ↓1+17
Комментарии42

Быстрое нахождение чисел Фибоначчи

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

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

Читать далее
Всего голосов 27: ↑25 и ↓2+32
Комментарии20

Основы программирования на примере исходного кода React

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

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

Читать далее
Всего голосов 7: ↑6 и ↓1+9
Комментарии2

Невероятно, но факт: умножение матриц на GPU идёт быстрее на «предсказуемых» данных

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

Шёл 2022 год. Я обратил внимание на новый интересный проект CUTLASS, отличающийся очень высокой скоростью выполнения операций умножения матриц. Я взял большую задачу по умножению матриц — 8192 x 8192 x 8192, и померял производительность в PyTorch, где используется библиотека cuBLAS.

Читать далее
Всего голосов 36: ↑35 и ↓1+55
Комментарии15

Век поиска кратчайшего решения задачи о кратчайшем пути

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

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

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

Читать далее
Всего голосов 42: ↑42 и ↓0+52
Комментарии14

Алгоритм пересечения полигонов

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

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

Читать далее
Всего голосов 29: ↑29 и ↓0+32
Комментарии13

Реализация SHA256 и SHA512 на языке RUST

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

Небольшая заметка студента о том, как самостоятельно реализовать алгоритмы SHA256 и SHA512 на Rust.

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

Читать далее
Всего голосов 15: ↑14 и ↓1+16
Комментарии28

GPU-вычисления в браузере на скорости нативного приложения: марширующие кубы на WebGPU

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

WebGPU — это мощный GPU-API для веба, поддерживает продвинутые рендеринговые конвейеры и вычислительные конвейеры GPU. WebGPU ключевым образом отличается от WebGL своей поддержкой вычислительных шейдеров и буферов хранения данных. В WebGL такие возможности отсутствуют, а WebGPU, в свою очередь, позволяет целиком выполнять в браузере мощные приложения, требующие вычислений на GPU. Речь может идти о самых разных приложениях, от GPGPU (напр., симуляции, обработка/анализ данных, машинное обучение, т.д.) до конвейеров рендеринга на основе GPU-вычислений — а также о многих других приложениях в этом спектре.

В этой статье мы оценим вычислительную мощность WebGPU, сравнив её с показателями Vulkan. Для этого мы реализуем классический алгоритм «марширующие кубы» (Marching Cubes) для WebGPU. Алгоритм марширующих кубов почти без оговорок относится к чрезвычайно параллельным, в составе этого алгоритма выполняется два глобальных шага редукции, необходимых для синхронизации местоположений рабочих элементов и вывода потоков. Поэтому данное решение — отличный вариант GPU-параллельного алгоритма, который стоит первым делом попробовать на новой платформе. Дело в том, что он достаточно сложен, чтобы API испытал давление сразу по нескольким направлениям сверх элементарных параллельных операций диспетчеризации в ядре. При этом он не столь сложен, чтобы на его реализацию требовалось существенное время, а также он не превращается в узкое место из-за ограничения производительности ЦП.

Читать далее
Всего голосов 15: ↑14 и ↓1+18
Комментарии3

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

Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

Новые коллекции в Android

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

В 2018 году в androidx появился новый пакет collection, который содержал несколько специфичных структур данных, переписанных на Kotlin, таких как LongSparseArray, SimpleArrayMap и SparseArrayCompat.

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

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

Читать далее
Всего голосов 13: ↑12 и ↓1+13
Комментарии7

Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

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

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.

Читать далее
Всего голосов 12: ↑10 и ↓2+17
Комментарии4

Равновесное ранжирование со смещением к целевой метрике

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

Постановка задачи:

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

Сделаем небольшое отступление. Многие уже на этом моменте могут сказать, что подобные задачи решаются методом коллаборативной фильтрацией. И в целом они будут правы. Но есть случаи, когда фильтрация не подходит или ее недостаточно. Для примера давайте представим себя в роли продавца автомобилей, который думает, какой новой маркой / моделью авто ему начать торговать. Допустим у него есть выбор из 1000 вариантов. И тут уже становится понятно, что идея коллаборативный фильтрации не очень хорошо вписывается в этот случай. Продавцу хочется сделать выбор, не основываясь на предпочтениях других продавцов, а исходя из неких характеристик, определяющих выгоду объекта.

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

Читать далее
Всего голосов 4: ↑3 и ↓1+5
Комментарии1

Похоже, я придумал свой алгоритм поиска кратчайшего пути (upd: меня опередили...)

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

Всем привет! Я реализовал, похоже, собственный алгоритм поиска кратчайшего пути с отрицательными ребрами графа.

Почему собственный? Я искал подобное решение, но не нашел, возможно, оно уже было реализовано, просто плохо поискал. Жду Нобелевскую премию =)

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

Читать далее
Всего голосов 102: ↑94 и ↓8+102
Комментарии108

Как мы в 2 раза ускорили решение MILP-проблем за счет ML

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

Многие задачи, с которыми мы имеем дело при цифровизации производства (неважно какого), – это задачи оптимизации: оптимизация производственного расписания, оптимизация цепочек поставок и размещения объектов, оптимизационное планирование и прочее. Многие из них сводятся к проблемам смешанного линейно-целочисленного типа (MILP – Mixed Integer Linear Problem). Конечно же мы хотим их решать быстрее и эффективнее, поэтому год назад начали разработку ML-модулей для этого. В этой статье мы познакомим вас с концептом одного такого модуля – для упрощения MILP методом обнуления переменных – и расскажем о том, насколько нам удалось с его помощью сократить время работы решателя.

Читать далее
Всего голосов 5: ↑5 и ↓0+7
Комментарии2

Создаём надёжные API для бэкенда при помощи конечных автоматов: подробное руководство

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

Что такое конечные автоматы?


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

Конечные автоматы часто используются в разработке программ для моделирования сложных потоков задач. С помощью конечных автоматов можно чётко и структурированно определить поведение системы. Тогда о системе становится проще рассуждать, её удобнее отлаживать и поддерживать.
Читать дальше →
Всего голосов 9: ↑8 и ↓1+11
Комментарии27

Решение проблемы дымки на изображениях с использованием .NET: Простой и эффективный подход

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

Простое .NET решение для четких фото: избавьтесь от дымки или тумана на изображениях всего за несколько шагов!

Читать далее
Всего голосов 10: ↑9 и ↓1+11
Комментарии18

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