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

Математика *

Царица всех наук

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

Повесть о стрелке и запятой

Время на прочтение 6 мин
Количество просмотров 8K
Программирование *Haskell *Математика *Функциональное программирование *
В этой статье мы:

  • Познакомимся с сопряженными функторами
  • Узнаем, как отвечать на вопрос «что такое каррирование»
  • Притворимся, что у нас есть состояние (если есть только функции)
  • И вдогонку поиграемся с примитивной оптикой (линзами)

И все это с помощью нескольких определений теории категорий и двух простейших конструкций: стрелки и запятой.


Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Комментарии 17

Закон больших чисел и то, чем он не является

Время на прочтение 3 мин
Количество просмотров 25K
Математика *
О законе больших чисел (збч) написано много (например, на английском, тут и тут, также [1]). В этом тексте я попробую рассказать о том, чем закон больших чисел не является – об ошибочном восприятии этого закона и потенциальных ловушках, спрятанных в математических формулировках.

Начнем с того, что же такое закон больших чисел. Неформально, это математическая теорема о том, что «вероятность отклонений среднего по выборке от математческого ожидания мала» и что «эта вероятность стремится к нулю при увеличении выборки». Совсем неформально,
Читать дальше →
Всего голосов 14: ↑10 и ↓4 +6
Комментарии 13

В пещерах этого не было

Время на прочтение 7 мин
Количество просмотров 91K
Программирование *Математика *История IT
Есть такой момент в человеческой психологии, что многие вещи, услышанные в течение жизни, начинают восприниматься как нечто само собой разумеющееся — как гравитация или магнетизм, хотя их просто кто-то когда-то придумал. От этой напасти в мозгу есть лайфхак – «В пещерах такого не было», об этом я сегодня выскажусь в плане IT.

image

Глава 0. Base-1


Когда я учился в школе (199x) все сидели на Pascal – язык чёткий, мудрый, на нём даже Dos Navigator был написан c VESA скринсейверами, а позже The Bat!, и олимпиадники ACM ICPC в 2000-е годы были в основном паскалистами. Мне из-за любви к играм и графике в то время зашёл C/C++, и сразу же в глаза бросилось фундаментальное различие – от ноля или единицы индексируются массивы, это до сих пор приходится уточнять на том же hackerrank.com.
Читать дальше →
Всего голосов 169: ↑163 и ↓6 +157
Комментарии 226

Нахождение точки пересечения двух прямых (и отрезков)

Время на прочтение 3 мин
Количество просмотров 43K
C++ *Разработка игр *Математика *
Из песочницы

Введение


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

image

Популярные способы и их критика


Возможно, многие вспомнят способ из школьной алгебры — составить уравнения двух прямых, приравнять их правые части, найти x, и подставить его в уравнение прямой, чтобы найти y (Подробнее здесь).

Однако данный способ становится достаточно громоздким при написании кода (возможно поэтому вы сейчас читаете эту статью), к тому же, он не является универсальным: если одна из прямых параллельна оси Y, мы получим ошибку деления на ноль при вычислении углового коэффициента, и нам придётся прописать код на этот случай; если две прямые перпендикулярны осям, требуется повозиться с обработкой и этого случая. Такой код становится длинным и некрасивым.

В поисках более элегантного решения данной проблемы я наткнулся на весьма интересные способы, основанные на векторном умножении ( habr.com/ru/post/267037 ) и ray castinging'е ( ru.wikipedia.org/wiki/Ray_casting#Концепция ). Но на мой взгляд, они неоправданно сложные в вычислительном плане. Поэтому представляю вашему вниманию (и критике) мой способ.
Читать дальше →
Всего голосов 23: ↑13 и ↓10 +3
Комментарии 36

Истории

Рубрика «Читаем статьи за вас». Июль — август 2020 года

Время на прочтение 26 мин
Количество просмотров 5.4K
Блог компании Open Data Science Алгоритмы *Обработка изображений *Математика *Машинное обучение *


Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!


Статьи на сегодня:


  1. High-Resolution Neural Face Swapping for Visual Effects (Disney Research Studios, ETH Zurich, 2020)
  2. Beyond Accuracy: Behavioral Testing of NLP Models with CheckList (USA, 2020)
  3. Thieves on Sesame Street! Model Extraction of BERT-based APIs (UMass & Google Research, ICLR, 2019)
  4. Time-Aware User Embeddings as a Service (Yahoo! Research, Temple University, 2020)
  5. Are Labels Necessary for Neural Architecture Search? (Johns Hopkins University, Facebook AI Research, 2020)
  6. GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding (Google, 2020)
  7. Data Shapley: Equitable Valuation of Data for Machine Learning (USA, 2019)
  8. Language-agnostic BERT Sentence Embedding (Google AI, 2020)
  9. Self-Supervised Learning for Large-Scale Unsupervised Image Clustering (Technion, Israel, 2020)
  10. Batch-Channel Normalization and Weight Standardization (2 papers, Johns HopkinsUniversity, USA, 2019)
Читать дальше →
Всего голосов 29: ↑28 и ↓1 +27
Комментарии 1

Факторизация чисел и методы решета. Часть II

Время на прочтение 11 мин
Количество просмотров 4.2K
Информационная безопасность *Криптография *Алгоритмы *Математика *Научно-популярное



Задается N — большое составное нечетное натуральное число (СННЧ), которое требуется факторизовать. Математическая теория метода решета числового поля (NFS) строится на основе теории делимости в алгебраических числовых полях. Перед любым автором, как и передо мной, возникает трудность сжатого изложения весьма обширного материала, касающегося методов SNFS и GNFS. Так как 2-й возник из 1-го я не привожу их отличий, хотя об этом много сказано.

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

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

Неоправданное усложнение (матрица СЛАУ для $N=2^{512} +1$ имеет размер 6000000×6000000) задачи факторизации больших чисел (ЗФБЧ) подвигло меня серьезно заняться этой проблемой. Уже удалось вскрыть закон распределения делителей СННЧ в НРЧ, т.е. понять где и как прячутся делители в натуральном ряде чисел, что конечно же упростит их поиск и обнаружение.
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 4

Курсы Computer Science клуба теперь онлайн

Время на прочтение 2 мин
Количество просмотров 3.4K
Блог компании Образовательные проекты JetBrains Алгоритмы *Математика *Машинное обучение *
В связи с эпидемией COVID-19 курсы Computer Science клуба теперь проходят онлайн. В весеннем семестре мы успели провести два оффлайн-курса: «Вероятностные алгоритмы» (И. А. Михайлин, UCSD) и «Классическая теория кодирования и новые приложения» (В. Скачек, университет Тарту). Оба курса доступны в записи, а остальные курсы пришлось отменить.

Вместо отменённых курсов мы организовали несколько открытых онлайн-лекций:

  1. «Генераторы „случайных чисел“: теория и практика» (А. Шень, LIRMM, Монпелье)
  2. «SANNS: Scaling Up Secure Approximate k-Nearest Neighbors Search» (И. Разенштейн, Microsoft Research),
  3. «Машинное обучение и приватность данных» (И. Миронов, Facebook AI),
  4. «Решётки и упаковки шаров» (В. Клепцын, CNRS, Университет Ренна).

Теперь я расскажу о том, какие крутые курсы проходят в этом семестре.

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

Автостопом к ответу жизни, Вселенной и всего такого

Время на прочтение 9 мин
Количество просмотров 16K
Блог компании Skillfactory Математика *Научно-популярное
Перевод


10 октября 2020 года исполнилось 10 лет с первого «Дня 42», потому что 1010102 = 42. Сегодня делимся переводом поста об этом удивительном числе. Автор — профессор компьютерных наук Лилльского университета управления Жан Поль Делахайе, также написавший книгу «Formal methods in artificial intelligence», которая вышла еще в 1987 году. Он рассказывает о некоторых аллюзиях на 42, об этом числе в математических последовательностях и, конечно, о 42 в контексте задачи о сумме трех кубов. Подробности под катом.
Приятного чтения!
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 5

Новый алгоритм проверки пересечений в графах прятался на виду

Время на прочтение 4 мин
Количество просмотров 20K
Математика *Научно-популярное
Перевод

Два специалиста по информатике нашли в весьма неожиданном месте идею, которая как раз пригодилась им для прорыва в теории графов




В октябре 2019 Якоб Хольм и Ева Ротенберг пролистывали работу, опубликованную ими за несколько месяцев до этого – и вдруг поняли, что наткнулись на нечто серьёзное.

Десятилетиями специалисты по информатике пытались разработать быстрый алгоритм для определения того, можно ли добавить к определённому графу рёбра так, чтобы он остался «планарным» – то есть, чтобы его рёбра не пересекались. Однако ни у кого не получалось улучшить алгоритм, опубликованный более 20 лет назад.

Хольм и Ротенберг с удивлением обнаружили, что в их работе есть идея, позволявшая достаточно сильно улучшить этот алгоритм. Она «разобралась с одним из главных препятствий на пути к реальному алгоритму», — сказал Хольм, специалист по информатике из Копенгагенского университета. «Возможно, мы полностью раскрыли этот вопрос».
Читать дальше →
Всего голосов 54: ↑52 и ↓2 +50
Комментарии 10

Разбор вступительного теста этого года в корпоративную магистратуру JetBrains на базе Университета ИТМО

Время на прочтение 10 мин
Количество просмотров 11K
Блог компании Образовательные проекты JetBrains Занимательные задачки Математика *
Вступительное испытание на корпоративную магистерскую программу JetBrains на базе Университете ИТМО начинается с онлайн-теста. Летом мы опубликовали разбор нескольких математических задач из теста 2019 года, а сегодня представляем разбор одного из вариантов прошедшего набора.

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

Подпольная тригонометрия различных метрик

Время на прочтение 5 мин
Количество просмотров 10K
Математика *

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

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

Кривые Безье. Немного о пересечениях и как можно проще

Время на прочтение 4 мин
Количество просмотров 6.7K
C++ *Алгоритмы *Математика *
Из песочницы

Вы сталкивались когда-нибудь с построением (непрерывного) пути обхода кривой на плоскости, заданной отрезками и кривыми Безье?


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


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


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

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

Географические развлечения

Время на прочтение 7 мин
Количество просмотров 6.4K
Математика *Читальный зал Научно-популярное Игры и игровые консоли
Из песочницы
Приветствую, Хабр!

Мне очень нравятся настолки, и поэтому я не мог пройти мимо статьи о том, как подобные игры пару столетий назад помогали людям узнавать мир. Хочу поделиться с вами переводом истории о географических развлечениях за авторством Валентина Колтона. Уверен, что не одного меня зацепил этот рассказ.
Читать дальше →
Всего голосов 27: ↑26 и ↓1 +25
Комментарии 2

Принятие решений на основе математики: задача о проблеме секретаря

Время на прочтение 7 мин
Количество просмотров 11K
Блог компании Skillfactory Занимательные задачки Математика *
Перевод

Настало время занимательных задач. Представьте, что вы снимаете квартиру в огромном городе. Как свести к минимуму риски при столь значимом выборе, когда вы ничего не знаете о вариантах заранее? На этот вопрос отвечает теория вероятности и задача о проблеме секретаря. Графики, рассуждения, немного кода на Julia — все подробности под катом.
Добро пожаловать!
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 14

Проблема останова лжеца Гёделя и брадобрея Кантора

Время на прочтение 12 мин
Количество просмотров 14K
Алгоритмы *Математика *Логические игры

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём различные темы из компьютерной науки и деконструируем их по полочкам.


А на этот раз мы разберём тему "абсурда" — почему он возникает и к каким странным последствиям приводит неосторожное обращение с ним. Докажем, что Санты не существует. Научимся пересчитывать линейки. Остановим временную петлю. И элегантно преодолеем столетний кризис оснований математики.


Так что забирайтесь в кроличью нору — вас ждёт короткое, но увлекательное приключение.



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

Читать дальше →
Всего голосов 67: ↑49 и ↓18 +31
Комментарии 173

Факторизация чисел и методы решета. Часть I

Время на прочтение 12 мин
Количество просмотров 17K
Информационная безопасность *Криптография *Алгоритмы *Математика *Научно-популярное



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

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

Простая идея факторизации целого нечетного числа N исторически — состоит в поиске пары квадратов чисел разной четности, разность которых кратна kN, при k =1 разложение успешно реализуется так как в этом случае сразу получаем произведение двух скобок $N = x^2 -y^2 =(x - y)(x + y)$ c сомножителями N. При k>1 случаются тривиальные разложения.

Таким образом, проблема факторизации преобразуется в проблему поиска подходящих квадратов чисел. Понимали эти факты многие математики, но П. Ферма первым в 1643 году реализовал идею поиска таких квадратов в алгоритме, названном его именем. Перепишем иначе приведенное соотношение $ x^2-N =y^2 $.

Если разность слева от равенства не равна квадрату, то изменяя х, можно подобрать другой квадрат, чтобы и справа получался квадрат. Практически все нынешние алгоритмы используют эту идею (поиска пары квадратов), но судя по результатам, похоже, что идея себя исчерпала.
Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 3

Общее решение диофантового линейного уравнения с многими переменными

Время на прочтение 2 мин
Количество просмотров 3.6K
Программирование *Математика *
🔥 Технотекст 2020

В своей предыдущей статье упоминалось об общем решении диофантового уравнения.


На сегодня существует несколько алгоритмов нахождения общего решения.


Один из них размещен на сайте кафедры теории чисел мехмата МГУ.


В этой статье я расскажу, как бы я решал поставленную задачу.


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


Для решения нам понадобится только явная формула решения диофантового уравнения с двумя переменными.


$\begin{cases}x_k=ca^{\phi(b)-1}+bk,\\y_k=c\frac{1-a^{\phi(b)}}{b}-ak,\end{cases}\\k\in\mathbb{R}$


где

$\phi()$


— функция Эйлера
Решение состоит из двух этапов.
Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 4

Разбираемся в рекурсии

Время на прочтение 11 мин
Количество просмотров 27K
Программирование *Математика *Функциональное программирование *

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



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


Зачем это надо? Рекурсия — один из краеугольных камней ФП, а некоторые из функциональных языков (например, Idris или Agda) обладают достаточно мощной системой типов, чтобы использовать их для проверки доказательств. А чтобы проверенным доказательствам на самом деле можно было доверять, было бы неплохо, чтобы логическая система, которую представляет система типов языка, была консистентна — то есть, если упрощать, чтобы в ней нельзя было доказать ложь.


Один из главных источников неконсистентности — незавершающиеся вычисления (для примера см. КДПВ), поэтому вышеупомянутые языки очень стараются дать возможность убедиться, что вычисления завершаются — соответствующая их часть даже имеет отдельное название, «termination checker». Но, увы, по фундаментальным причинам у любой такой проверки всегда будут ложноположительные или ложноотрицательные срабатывания, поэтому приходится идти на компромиссы. В доказательствах лучше перебдеть, чем недобдеть, поэтому всегда есть завершимые функции, которые этими языками отвергаются. Однако, эти функции можно переписать так, чтобы termination checker был доволен, если можно доказать, что рекурсивный вызов всегда в каком-то смысле «меньше».


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

Читать дальше →
Всего голосов 73: ↑72 и ↓1 +71
Комментарии 92

Как математический «фокус» спас физику частиц

Время на прочтение 7 мин
Количество просмотров 9.6K
Математика *Научно-популярное Физика
Перевод

Перенормировка, возможно, оказалась самым важным прорывом в теоретической физике за последние 50 лет



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

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

Была только одна проблема – вся эта теория держалась на надеждах и молитвах. Только при помощи такой техники, как "перенормировка", позволявшей тщательно скрывать бесконечные величины, исследователи могли обойти бессмысленные предсказания этой теории. Схема работала, но даже те, кто разрабатывал эту теорию, подозревали, что она может оказаться карточным домиком, держащимся за счёт извращённого математического трюка.
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Комментарии 15

Танец света: секрет синхронизации светлячков

Время на прочтение 13 мин
Количество просмотров 4.9K
Блог компании ua-hosting.company Математика *Читальный зал Научно-популярное Экология


Насекомые по праву считаются самыми многочисленными и разнообразными представителями фауны. Они живут во всех уголках нашей планеты: от тропических джунглей Амазонки до каменистых берегов Гренландии. Среда обитания в сопряжении с эволюционными изменениями породили множество уникальных видов, чей внешний вид, повадки или гастрономические предпочтения не перестают удивлять. Одними из самых необычных представителей класса насекомых можно с уверенностью назвать светляков, способных излучать свет за счет специальных органов (лантерн). Но не только сам факт свечения удивителен, но и то как он применяется. Ученые из университета Колорадо (Боулдер, США) попытались понять, как у светляков вида Photinus carolinus происходит синхронизация свечения. Как проводилось исследование, чем отличается поведение роя светляков от одиночных особей, и в чем же секрет синхронизации свечения? Ответы на эти вопросы мы найдем в докладе ученых. Поехали.
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 2

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