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

Алгоритмы *

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

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

Игрострой. Программирование. Оптимизация как камень преткновения

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

Всем привет! Для тех кто не знает, меня зовут Ш. Сергей!

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

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

ознакомится

Задача коммивояжёра в общем виде. Наибыстрейшее точное решение

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

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

Тут я хочу подытожить все опробованные подходы и выбрать лучший по моему мнению.

Читать далее

Поделить нельзя — умножить или алгоритм быстрого деления по методу Ньютона-Рафсона

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


Все мы в школе проходили деление «столбиком» — простой алгоритм, который несложно реализовать, вот только не очень быстрый. В прошлый раз мы рассматривали, как компилятор оптимизирует деление в случаях, когда делитель известен во время компиляции, но применение его напрямую, чтоб оптимизировать деление для делителей, определямых в run-time, невозможно: вычисление констант сдвига и умножения само по себе требует деления.

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

Как на C# написать программу в одно выражение?

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

Попалась на Stack Overflow интересная задачка: написать программу как можно короче и в одну строку. Что подразумевается под одной строкой? Это значит использовать только один оператор (statement) верхнего уровня с точкой с запятой в конце и не использовать блоки кода. Вложенные операторы допускаются.

Читать далее

Красно-черные сигналы в node.js

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

Что происходит, когда мы отправляем сигнал приложению на node.js? Когда вызываются обработчики? А где хранятся? Во всем этом мы разберемся в данной статье, начиная от пользовательского кода на javascript и до встречи с операционной системой.

Читать далее

Решаем судоку на pytorch

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

Решаем судоку на pytorch. Можно ли делать нейросети без обучения? Без кучи тестовых примеров? Попробую ответить на этот вопрос.

Читать далее

Близкий родственник эльфа – программер

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

Многие знакомы с ELF-файлами и их структурой. Поговорим о программерах. Программер – это файл в формате ELF (расширение может быть BIN, MBN или ELF), который предназначен для  работы с памятью смартфонов на Android с процессорами от Qualcomm в режиме аварийной загрузки (EDL mode – emergency download, 9008). Также его некоторые называют «пожарный шланг» (от английского firehose) или просто «шланг». Файл представляет из себя контейнер с набором команд для базовой работы с памятью, которые подписаны цепочкой сертификатов. Иногда возникает необходимость подобрать для своего устройства подходящий программер. Вот и попробуем разобраться в этом.

Читать далее

Математика прекрасного. Как создать красивую картинку, если ты дилетант, художник или нейросеть?

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

Привет, Хабр, я Павел Бузин, работаю аналитиком в компании Cloud.ru и занимаюсь решением задач, требующих применения различных математических методов, в том числе используемых для машинного обучения. 

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

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

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

Сравнительный анализ скорости API брокеров: Alor vs Tinkoff

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

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

Читать далее

Решение головоломки из университетского квеста с помощью Python

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

Треки — одна из интересных головоломок игры Puzzle Hunt Мельбурнского Университета 2008 года. Это задание было частью пятого акта игры, и ему предшествовало небольшое повествование, которое продолжало ее сюжет. В соответствии с ним ночь в стране выдалась неспокойная; и вместо того, чтобы спать, вы провели ее в ужасе наблюдая по телевизору за уличными беспорядками. С наступлением дня ситуация несколько улучшилась, и вы решаете выйти из дома, чтобы подышать свежим воздухом. На улице вы замечаете детей, беззаботно играющих в классики на дороге. Когда вы подходите к ним поближе в надежде на то, что часть их безмятежности передастся и вам, то ваше внимание переключается на очертания классиков, небрежно нарисованных мелом на дороге. Они совершенно не соответствуют ни одним классикам, в которые вам когда-либо доводилось играть...

Ниже можно было видеть эти «классики». 

Читать далее

JavaScript: структуры данных и алгоритмы. Часть 4

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


Привет, друзья!


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



Сегодня мы рассмотрим дерево отрезков, дерево Фенвика, а также граф (направленный и ненаправленный).


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


Интересно? Тогда прошу под кат.

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

Как научить компьютер различать цвета?

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

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

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

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

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

Изначально были попытки обучить на размеченных данных классические детекторы объектов, например, YOLO. Однако оказалось, что модель сильно усложняет задачу — начинает ориентироваться на расстановку игроков, и из-за этого точность становится невысокой. Поэтому возникла идея попробовать более классические и, соответственно, более простые алгоритмы.

Читать далее

Алгоритмические уведомления для рынка акций MOEX в реальном времени

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

Алгоритмические уведомления для рынка акций MOEX в реальном времени

Я создал сервис проприетарных алгоритмов технического анализа в реальном времени. Сервис имеет максимально доступный интерфейс, простую регулировку, есть справка, график с маркерами. Это не аналог Tradingview, а готовые проработанные алгоритмы с настройкой для подходящей ситуации для вас.

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

Читать далее

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

Как на изи «влететь» на Хак и затащить его на flow-режиме

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

Введение и задача

Добрый день, уважаемые читатели Хабр.ру! Я хотел бы поделится с вами отчетом по хакатону (Practice & Scale AI: Рерайтинг текста на уровне, позволяющем проходить фильтрацию распознающих систем), в который мы очень «лихо» влетели со всей командой (Anomaly Detection) и, забегая вперед, скажу, который мы «втащили» на третье место по нашему кейсу. Жаль, правда, что призовое место было одно, но все же это был отличный опыт и по «горячим» следам все сейчас опишу и расскажу, что мы делали и как «пришли» к нашему решению.

Читать далее

Как в Netflix сделали поиск по федеративному графу

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

За последние несколько лет те, кто занимается в Netflix направлением Content Engineering, перевели множество служб компании на использование федеративной платформы GraphQL. Этот процесс продолжается и сегодня. Применение федерации GraphQL даёт командам, отвечающим за различные предметные области, новые возможности. Теперь они могут, независимо от других команд, создавать и использовать собственные графовые службы, относящихся к сфере их деятельности (Domain Graph Service, DGS). Команды, кроме того, могут связывать свои предметные области с другими областями в унифицированной схеме GraphQL, доступ к которой даёт федеративный шлюз.

Давайте, в качестве примера, рассмотрим три главнейшие сущности этого графа.

Читать далее

Как я ускорила парсинг строк в serde_json на 20%

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

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

serde — основной фреймворк для сериализации и десериализации в Rust. Его используют как крейт по умолчанию во всей экосистеме. serde_json — это официальный serde-миксин для JSON, так что каждый раз, когда нужно что-то парсить, люди обращаются именно к нему. Конечно, есть и другие библиотеки, специализующиеся на парсинге JSON, например simd-json, но популярность у них, мягко говоря, удручающая. serde_json значительно популярнее: на момент написания от него зависят аж целых 26916 крейта, а от simd-json — всего 66.

Это делает serde_json хорошей мишенью (не как у Jia Tan) для оптимизаций. Велик шанс того, что многим из тысяч пользователей переход на simd-json позволил бы добиться ускорения, но, пока они этого не делают, более мелкие оптимизации — лучше, чем совсем ничего, и такие улучшения — глобальный выигрыш для экосистемы.

Читать далее

Бинарный поиск на пальцах

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

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

Читать далее

Решение задачи с собеседования Reverse Linked List [+ ВИДЕО]

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

Всем салют! Давайте решим задачу "Reverse Linked List"

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

Читать далее

strlcpy, или как CPU противоречат здравому смыслу

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

Один из моих старых постов о strlcpy недавно вызвал обсуждения на различных форумах. Вероятно, с этим как-то связан выпуск новой версии POSIX. Многие авторы приводили один контраргумент, который я слышал и раньше:

«В общем случае, когда исходная строка умещается в конечный буфер, strlcpy будет обходить строку только один раз, а strlen + memcpy будут обходить её дважды».

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

Читать далее

Цифровое моделирование

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

Все три российских углеводорода – нефть, газ и уголь – будут востребованы на мировых рынках на десятки лет вперед. Такой вывод напрашивается исходя из энергетической стратегии России, которая сейчас разрабатывается вплоть до 2050 года.
не только Китай, но и Европа в этом году покупает больше российского газа. 
Задача совершенствования разведки месторождений, разработки его инфраструктуры, добычи, переработки, транспортировки, поставки заказчикам договорных объемов требует от специалистов внедрения самых современных технологий на всех этапах проектирования и сопровождения существующих добывающих комплексов. Там, где таких технологий нет, их приходится создавать практически с нуля самостоятельно. Очень важно при этом использовать наработки в области цифрового моделирования объектов, всех процессов, включая управление месторождением в целом.

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

Читать далее

Читать далее

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