Рубрика «большие числа»

Неисчислимое: в поисках конечного числа - 1

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

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

В XX в. стала отчетливо проступать другая проблема. С бесконечностью мы можем разобраться при помощи одного символа (∞), но что делать с числами, которые меньше бесконечности, но при этом невообразимо огромны?

Мы вплотную подошли к числам, едва уступающим «уроборосу», но при этом все еще имеющим теоретическое и практическое значение. Вы, вероятно, могли слышать о числе Грэма, которое является верхней границей для решения определенной проблемы в теории Рамсея. Спустя 88 лет после появления теоремы Рамсея математики готовы отбросить старые методы и пойти еще дальше.

Добро пожаловать в кроличью нору без дна.
Читать полностью »

Невычислимые функции на примере Busy Beaver Game - 1

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

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

Читать полностью »

Фрактал «Сокровища Атлантиды» (автор: Phoenix-22)

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

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

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

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

Читать полностью »

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

Посвящается новичкам, которые недоумевают, почему значение в переменной в какой-то момент уходит в минус

Пример кода

public class Main {

static int IWantMore;

public static void main(String[] args) {

    while (true) {
        IWantMore++;
        System.out.println(IWantMore);
        if (IWantMore == 0) break;
    }
}

}

С каждым новом заходом он прибавляет к IWantMore. Казалось бы, что цикл не остановиться, так как к моменту первой проверки if -ом значение будет 1, но это не так…
Читать полностью »

Однажды, пролистывая популярный Q&A по математике (math.stackexchange.com), я обнаружил вопрос про расчет мультиномиальных коэффициентов и он меня заинтересовал. На заметку, для тех, кто не знает что это такое, существует статья в википедии. Итак, нужно вычислить следующее выражение:

Методы вычисления мультиномиальных коэффициентов

Казалось, зачем на хабре выкладывать решение такой простой задачи? Ответ заключается в том, что самый простой наивный способ, заключающийся в перемножении факториала суммы с последующим делением его на произведение факториалов, не подойдет из-за того, что промежуточные вычисления выйдут за разрядную сетку типа uint и даже ulong, хотя результат может оказаться в пределах значений этих типов. Мне понравилась эта задача, и я сразу же сел за ее решение и придумал три способа. Остальные два способа я позаимствовал из других ответов. Итак, статья будет об описании и сравнении всех реализованных мною методов на C# под .NET.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js