Описание
Пусть перестановка целых чисел {1, 2, ..., n}
будет называться минимально интерполируемой, если никакое множество k+2
точек (вместе с их индексами) не попадает на многочлен степени k
. То есть,
- Ни одна точка не падает на горизонтальную линию (полином 0 градусов)
- Ни одна точка не падает на линию (полином 1 степени)
- Никакие четыре точки не падают на параболу (полином 2 степени)
- И так далее.
Вызов
Напишите программу, которая вычисляет последовательность OEIS A301802 (n) , число минимально интерполируемых перестановок {1, 2, ..., n}
для n
как можно большего числа.
счет
Я увеличу время ввода вашего кода на моем компьютере (2,3 ГГц Intel Core i5, 8 ГБ ОЗУ). Ваша оценка будет лучшим входом, который займет менее 1 минуты, чтобы вывести правильное значение.
пример
Например, перестановка [1, 2, 4, 3]
минимально интерполируема, потому что
the terms together with their indices
[(1, 1), (2, 2), (3, 4), (4, 3)]
have the property that
(0) No two points have the same y-value.
(1) No three points lie on a line.
(2) No four points lie on a parabola.
На иллюстрации видно, что горизонтальные линии (красные) имеют не более одной точки, линии (синие) имеют не более двух точек, а параболы (зеленые) имеют три точки.
Данные
Вот минимально интерполяция перестановок для n=3
, n=4
и n=5
:
n = 3: [1,3,2],[2,1,3],[2,3,1],[3,1,2]
n = 4: [1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,2,3],[2,1,3,4],[2,1,4,3],[2,3,1,4],[2,4,1,3],[2,4,3,1],[3,1,2,4],[3,1,4,2],[3,2,4,1],[3,4,1,2],[3,4,2,1],[4,1,3,2],[4,2,1,3],[4,2,3,1],[4,3,1,2]
n = 5: [1,2,5,3,4],[1,3,2,5,4],[1,3,4,2,5],[1,4,2,3,5],[1,4,3,5,2],[1,4,5,2,3],[1,4,5,3,2],[1,5,3,2,4],[2,1,4,3,5],[2,3,1,4,5],[2,3,5,1,4],[2,3,5,4,1],[2,4,1,5,3],[2,4,3,1,5],[2,4,5,1,3],[2,5,1,3,4],[2,5,1,4,3],[2,5,3,4,1],[2,5,4,1,3],[3,1,4,5,2],[3,1,5,2,4],[3,1,5,4,2],[3,2,5,1,4],[3,2,5,4,1],[3,4,1,2,5],[3,4,1,5,2],[3,5,1,2,4],[3,5,1,4,2],[3,5,2,1,4],[4,1,2,5,3],[4,1,3,2,5],[4,1,5,2,3],[4,1,5,3,2],[4,2,1,5,3],[4,2,3,5,1],[4,2,5,1,3],[4,3,1,2,5],[4,3,1,5,2],[4,3,5,2,1],[4,5,2,3,1],[5,1,3,4,2],[5,2,1,3,4],[5,2,1,4,3],[5,2,3,1,4],[5,2,4,3,1],[5,3,2,4,1],[5,3,4,1,2],[5,4,1,3,2]
Если моя программа правильная, первые несколько значений a(n)
, количество минимально интерполируемых перестановок {1, 2, ..., n}
:
a(1) = 1
a(2) = 2
a(3) = 4
a(4) = 18
a(5) = 48
a(6) = 216
a(7) = 584
a(8) = 2870
источник
Ответы:
C #
Принимает значения в
n
качестве аргументов командной строки или, если выполняется без аргументов, время до самогоn=10
. Компиляция как "Release" в VS 2017 и запуск на Intel Core i7-6700 я вычисляюn=9
за 1,2 секунды иn=10
за 13,6 секунды.n=11
чуть более 2 минут.FWIW:
источник