Как стать автором
Обновить
-4
0
Александр Радченко @ARad

Разработчик

Отправить сообщение

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

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

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

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

Читать далее
Всего голосов 33: ↑34.5 и ↓-1.5+36
Комментарии14

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

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

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

Читать далее
Всего голосов 25: ↑28 и ↓-3+31
Комментарии13

Что учесть если используешь SignalR и захочешь масштабировать .Net-приложение?

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

Все мы любим «магию», которую дает нам такой инструмент как SignalR и с удовольствием внедряем это в проекты.

Конечно, кто откажется от динамики, мгновенного отклика на действия и мигающих иконочек с подписью «что же делает система в данный момент и не стоит ли перезагрузить страницу чтобы клацнуть ее еще раз?» ?

Однако и тут есть пара подводных камней, с которым я с командой столкнулся на продакшне...

Читать далее
Всего голосов 10: ↑11.5 и ↓-1.5+13
Комментарии7

Создание простой Roblox игры без особого знания Lua

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

Если вы когда-либо мечтали создать свою собственную игру в Roblox, но не знаете с чего начать, то эта статья для вас. В этом руководстве я покажу вам, как создать игру в Roblox без базового знания программирования.

Прежде чем мы начнем, вам нужно зарегистрироваться на сайте roblox.com и загрузить Roblox Studio - инструмент, который позволяет создавать игры на платформе Roblox. После установки запустите программу и выберите пустой шаблон для создания новой игры.

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

На практике пробуем KAN – принципиально новую архитектуру нейросетей

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

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

Однако теперь все может измениться. В KAN (Kolmogorov-Arnold Networks) исследователи реализовали перемещение функций активации с нейронов на ребра нейросети, и такой подход показал блестящие результаты.

Читать далее
Всего голосов 52: ↑60 и ↓-8+68
Комментарии15

Как потреблять API с ограничением по RPS в .NET приложениях

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


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

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

Но теперь на Хабре есть эта статья, которая научит отправлять запросы из HttpClient так, чтобы не получать 429 Too Many Requests.
Читать дальше →
Всего голосов 43: ↑52 и ↓-9+61
Комментарии10

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

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

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

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

Фундамент AI: обратное распространение ошибки простыми словами

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

Что если бы я вам сказал, что без понимания того, что такое backpropagation (обратное распространение ошибки), вы никогда не сможете использовать AI эффективно? Тогда я бы, конечно, соврал. Знать такие детали не требуется для использования AI в прикладных задачах, но, тем не менее, это базовый фундамент ML/AI, и понимать, как все устроено, полезно, ну или как минимум, интересно.

Читать далее
Всего голосов 18: ↑21.5 и ↓-3.5+25
Комментарии9

Питер Норвиг: автор лучшего в мире учебника по ИИ

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


Питер Норвиг (Peter Norvig) — выдающийся учёный, один из отцов современной ИИ-разработки. После сингулярности ИИ точно оставит его в живых в знак благодарности.

Норвиг не только хороший программист, но и теоретик программирования, учёный и преподаватель, в длинном резюме перечислено 58 статей, а количество цитирований на сегодняшний день составляет 78 830.

Основное признание Норвиг получил как автор учебника «Искусственный интеллект: современный подход», который в наше время считается самым популярным учебником по ИИ в вузах. Эта фундаментальная работа претерпела уже четыре переиздания.
Читать дальше →
Всего голосов 46: ↑51.5 и ↓-5.5+57
Комментарии7

Как сделать pruning, чтобы потом не плакать

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

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

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

Принцип обрезки можно применять в разных ситуациях. Например, если у нас есть модель, которая обучена для распознавания ста классов объектов, а нам на самом деле нужно только десять, то почему бы не убрать те девяносто лишних? Это позволит нам сделать модель поменьше, но не менее эффективной. А если мы создаем модель с нуля, то обрезка может помочь нам сразу сделать ее компактнее и эффективнее.

Короче, pruning — это для тех, кто хочет сделать свои модели легче и быстрее без потери качества.

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

Кто реально угрожает C++ (нет, Rust, не ты)

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

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Всего голосов 210: ↑221.5 и ↓-11.5+233
Комментарии361

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

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

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

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

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

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

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

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

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

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

Как ChatGPT поможет заменить репетитора по английскому для айтишников

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

По мотивам нашей прошлой статьи «Как айтишникам быстро выучить английский с помощью ChatGPT? » мы решили написать продолжение и чуть побольше раскрыть эту тему, раз она так залетела.

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

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

Читать далее
Всего голосов 21: ↑11.5 и ↓9.5+2
Комментарии14

Бесконтактные и слабые измерения, контрфактические вычисления и контрпортация

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

От философов-антиреалистов, эзотериков и богословов часто можно услышать проповеди на тему ограниченности научных методов и о существовании за пределами физического мира иных планов бытия, которые нематериальны и не могут быть познаны экспериментальным путём. Но они не в курсе, что наука уже много лет занимается изучением контрфактуалов - «потусторонних» событий, происходящих не в нашей вселенной, но тем не менее подчиняющихся известным физическим законам. Учёные постоянно открывают новые способы «взломать» классическую физику и ставят умопомрачительные эксперименты, результаты которых заставляют нас пересмотреть традиционные определения реальности. Практика показывает, что природа познаваема и содержит в себе всё необходимое для роста знания, главное – задавать ей правильные вопросы. Как измерить светочувствительную бомбу, не подрывая её? Как провести вычисление, не включая компьютер? Как увидеть, не глядя, и узнать о событии, которое не произошло? Как подсмотреть за котом Шрёдингера и воскресить его? Как отменить коллапс волновой функции? Наконец, как осуществить настоящую телепортацию без локального обмена информацией? Если обычная квантовая телепортация, запутанность и туннелирование уже не кажутся вам чем-то удивительным, готовьтесь к настоящим чудесам. В этой статье я разберу пять экспериментов, о которых вы вряд ли слышали, но результаты которых действительно взрывают мозг.

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

Я программист, и я тупой

Время на прочтение2 мин
Количество просмотров65K
Я пишу код за деньги уже пятнадцать лет. Пробовал себя и в других ролях – управление продуктом, аналитика, тестирование, – но как-то не пошло. И с течением лет пришел к осознанию, что я не очень умный. К сожалению.

Никаких особых медицинских диагнозов мне не ставили, но мои умственные способности крайне ограниченны. Даже те задачи на Leetcode, которые попроще, вызывают у меня затруднения. Когда я читаю о самом обычном алгоритме консенсуса, у меня кипит мозг. У меня плохо получается отслеживать сложные зависимости в кодовой базе. Я не способен освоить модные языки вроде Rust (пытался, но по правде сказать, для меня это чересчур). Я терпеть не могу микросервисы и современный фронтенд: там слишком много движущихся частей, и уследить за всеми я не в состоянии.

Как же я выхожу из положения?
Читать дальше →
Всего голосов 285: ↑298 и ↓-13+311
Комментарии330

Возможное решение проблемы ссылок в языках программирования

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


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


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


Тем не менее, ссылки в той или иной форме поддерживаются во всех языках программирования, хотя под этим термином часто подразумеваются не полностью эквивалентные термины. Например, под словом "ссылка" можно понимать ссылку как адрес в памяти (как в С++) и ссылку, как указатель на объект (как в Python или Java).


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

Читать дальше →
Всего голосов 5: ↑6 и ↓-1+7
Комментарии103

Книги по C# для новичков в разработке: что стоит почитать в 2024 году

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

Разработчикам любого уровня нужно постоянно учиться — смотреть, слушать и читать всё, что может пригодиться для развития и становления в качестве специалиста. Особенно это касается новичков в разработке, ведь им нужно освоить огромное количество информации. И книги — один из лучших источников её получения. Под катом расскажем о 5 хороших книгах по C#, которые стоит прочесть начинающему программисту.

Читать далее
Всего голосов 12: ↑17 и ↓-5+22
Комментарии6

«Строка бога» и «лакмусовая бумажка» для ИИ-генераторов изображений

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

Здравствуйте, уважаемые читатели!

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

Кроме того, хотелось бы ввести в обиход промт-инженеров два новых термина.

Читать далее
Всего голосов 18: ↑9.5 и ↓8.5+1
Комментарии75

Фильтр Блума

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



У каждого разработчика есть набор инструментов для решения различных задач. Однако со временем возникает необходимость расширять этот набор, чтобы эффективно справляться с более сложными задачами. В этой статье я хочу познакомить вас с инструментом, которым вы, скорее всего, раньше не пользовались. И хотя он подходит для решения узкого спектра задач, его использование может оказаться весьма полезным. Знакомьтесь — "фильтр Блума" (Bloom filter).

Читать дальше →
Всего голосов 43: ↑47.5 и ↓-4.5+52
Комментарии16
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Паттая, Чон Бури, Таиланд
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Application Developer
Senior
От 2 000 $
C#
.NET
Algorithms and data structures
Multiple thread
Code Optimization
System Programming
Applied math
Database
High-loaded systems
Designing application architecture