Pull to refresh
52
0
Send message
Я верю, что одним из вариантов решения проблемы несогласованности уравнений может служить формирование системы уравнений в однородной системе координат, с использованием методов проективной геометрии, но это умозаключение является предчувствием

Мыслите в правильном направлении, но проективная геометрия тут не при чем. Эта проблема решается использованием аффинно-инвариантных методов, таких как метод Ньютона и BFGS. Есть отдельные методы, которые борются только с разной размерностью координат. Самый известный из них, это Adam.

Вообще решение систем нелинейных уравнений и нелинейная оптимизация — активно развивающаяся область. К примеру, менее чем 10 лет назад, было обнаружено, что задачу посадки на Марс можно свести к выпуклой оптимизации — Minimum-Landing-Error Powered-Descent Guidance for Mars Landing Using Convex Optimization. SpaceX использует что-то похожее для более сложной задачи посадки ракет на Землю — Autonomous Precision Landing of Space Rockets (статья начинается на 15 странице), но деталей, к сожалению, не раскрывает.

Из Open Source библиотек решения нелинейных уравнений советую глянуть на проект со странным названием COIN-OR. Еще есть проприетарная библиотека SNOPT, но есть открытое описание используемого там алгоритма. Для выпуклых задач есть CVX, CVXPY, CVXOPT и CVXGEN.

Из книжек мне понравилась Convex Optimization. Stephen Boyd and Lieven Vandenberghe. Для общего случая нелинейной оптимизации/решения систем нелинейных уравнений я пока читал только разрозненные статьи.
Можно завести несколько аккаунтов в браузере.
Цель cld, как можно судить по его названию, — маленький размер и с этой задачей cld3 справляется лучше. Конкретных значений размера, точности и скорости гугл, к сожалению, пока не опубликовал. Точность cld2 (использующего списки слов) уже сейчас всех полностью устраивает, так что повышать ее не имеет смысла.
https://github.com/google/cld3 — новый детектор языка использует нейронную сеть. Выдает сравнимую точность, меньшую скорость, но сильно компактнее cld2.
А несчастному разработчику, который героически исправляет 261 баг парсинга C++, вы молоко за вредность даёте?
Предупреждение: если вы умеете решать задачу коммивояжёра на 200 узлах

Конечно же вы имели в виду на 20 000 узлах?
Тестировать микробенчмарки, не глядя на дизассемблер — мракобесие. В видео на CppCon 2015 все это подробно объясняется.
В первую очередь нужно смотреть в дизассемблер. На x86 есть инструкция cmov (условное присваивание), предназначенная для избавления от простых ветвлений. Плюс есть SSE инструкции вычисляющие max/min для тех случаев, где цикл может быть векторизован. На ARM практически все инструкции могут быть условными, NEON (векторные инструкции на ARM) тоже поддерживает max и min. Так что у хорошего компилятора даже в коде с if'ами не будет полноценных ветвлений.

PS Для предотвращения оптимизации циклов, нужно использовать volatile. Так же советую посмотреть это видео про микробенчмарки: CppCon 2015: Chandler Carruth «Tuning C++: Benchmarks, and CPUs, and Compilers! Oh My!»
А есть ссылки на видео докладов на youtube?
Чтобы N стремился к бесконечности, битность чисел тоже должна стремиться к бесконечности. Даже в варианте где разрешены повторения парных чисел, очень странно указать 32 бита и не подразумевать, что числа имеют размер машинного слова. Тогда уж надо указывать 30 бит или 50 бит (компьютеры давно уже 64-битные, а это самое круглое число меньше 64).
Некорректно поставленная задача означает лишь то, что ее нужно преобразовать в корректно поставленную наиболее естественным способом, используя общепринятые умолчания. После чего решить. При объяснении решения, в зависимости от обратной реакции вопрошающего, возможно преобразовать решение обратно. Подход требующий 32 слова в памяти не является решением получившейся корректно поставленной задачи, значит это не правильное решение. Если бы оно подразумевалось, нужно было бы писать в условии не O(1) памяти, а O(32) памяти. Ну или сразу писать корректную формулировку с переменной длиной машинного слова.
PS Конечное поле тут не по модулю простого числа. Поле должно иметь характеристику 2, чтобы парные числа сокращались.
Сложение — xor. Умножение выполняется сложнее. Вначале нужно выполнить битовое умножение без переносов, а потом посчитать CRC. Еще материал по этой теме: https://habrahabr.ru/post/212095/
Очевидно, что подразумевается, что размер чисел равен машинному слову. Я не вижу другого разумного способа формализовать задачу. В стандартной модели вычислений, операции над машинными словами выполняются за O(1) и одно машинное слово занимает O(1) памяти.
Квадраты бесполезны, поскольку x2+y2=(x+y)2 — мы не получаем новой информации. Нужно
Решение
использовать кубы. x3+y3=(x+y)(x2+xy+y2). Таким образом мы узнаем x2+xy+y2. Как мы видели выше, сумму квадратов мы уже знаем. Вычитая ее, получаем xy. Остается решить квадратное уравнение и найти x и y. Это единственное (из предложенных в комментариях) правильное решение задачи, поскольку 32 аккумулятора — это не O(1), а O(w), где w — размер машинного слова.
Мир уже давно перешагнул этот порог и революция идет на полных парах.
Компилятор все правильно сделал — указал на весьма нетривиальное место. Тот кто писал этот код, явно не думал о всех случаях соотношения размеров size_t и long. Собственно настоящую ошибку с обработкой больших файлов, программисты так и не исправили. Правильно в этом месте использовать fseeko и ftello, а коммиты с fseek и ftell вообще не должны попадать в репозиторий.
Умножение матриц — это композиция линейных отображений.
x примерно равен 6.2832 n — (3.1416-1.3170 i) или 6.2832 n + (3.1416-1.3170 i). https://www.wolframalpha.com/input/?i=cos%5Bx%5D%3D-2
Так пишут, что алгоритм работает в 60 раз быстрее. Так что теперь они в реалтайме работают.

DPM = Deformable Part Models? Не знаю, возможно они действительно использовались раньше.
These example images show Google’s deep learning system detecting pedestrians in different situations. The system performed 60 times faster than previous methods.

spectrum.ieee.org/cars-that-think/transportation/self-driving/new-pedestrian-detector-from-google-could-make-selfdriving-cars-cheaper
Вы бы доверили свою жизнь нейронной сети управляющей автомобилем, которая неизвестно как отреагирует на незнакомую ситуацию?

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

Information

Rating
Does not participate
Date of birth
Registered
Activity