Выполнение последовательности

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

Определение

Пусть будет последовательностью элементов из полностью упорядоченного множества . Серия из является максимальной возрастающей последовательностью . То есть, и [ необходимо разъяснение ] предполагая, что и существует. Например, если является натуральным числом , последовательность имеет две серии и . Х = х 1 , , х н {\displaystyle X=\langle x_{1},\dots,x_{n}\rangle} Х {\displaystyle X} х я , х я + 1 , , х дж 1 , х дж {\displaystyle \langle x_{i},x_{i+1},\dots,x_{j-1},x_{j}\rangle} х я 1 > х я {\displaystyle x_{i-1}>x_{i}} х дж > х дж + 1 {\displaystyle x_{j}>x_{j+1}} х я 1 {\displaystyle x_{i-1}} х дж + 1 {\displaystyle x_{j+1}} н {\displaystyle n} н + 1 , н + 2 , , 2 н , 1 , 2 , , н {\displaystyle \langle n+1,n+2,\dots,2n,1,2,\dots,n\rangle } н + 1 , , 2 н {\displaystyle \langle n+1,\dots,2n\rangle} 1 , , н {\displaystyle \langle 1,\dots,n\rangle}

Пусть определяется как число позиций, таких что и . Это эквивалентно определяется как число серий минус один. Это определение гарантирует , что , то есть, если и только если, последовательность отсортирована. В качестве другого примера, и . г ты н с ( Х ) {\displaystyle {\mathtt {работает}}(X)} я {\displaystyle я} 1 я < н {\displaystyle 1\leq i<n} х я + 1 < х я {\displaystyle x_{i+1}<x_{i}} Х {\displaystyle X} г ты н с ( 1 , 2 , , н ) = 0 {\displaystyle {\mathtt {runs}}(\langle 1,2,\dots,n\rangle)=0} г ты н с ( Х ) = 0 {\displaystyle {\mathtt {runs}}(X)=0} Х {\displaystyle X} г ты н с ( н , н 1 , , 1 ) = н 1 {\displaystyle {\mathtt {runs}}(\langle n,n-1,\dots,1\rangle)=n-1} г ты н с ( 2 , 1 , 4 , 3 , , 2 н , 2 н 1 ) = н {\displaystyle {\mathtt {runs}}(\langle 2,1,4,3,\dots,2n,2n-1\rangle)=n}

Сортировка последовательностей с небольшим количеством запусков

Функция является мерой предсортированности. Естественная сортировка слиянием является r u n s {\displaystyle {\mathtt {runs}}} -оптимальной. То есть, если известно, что последовательность имеет небольшое количество запусков, ее можно эффективно отсортировать с помощью естественной сортировки слиянием. г ты н с {\displaystyle {\mathtt {работает}}}

Длинные пробежки

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

Ссылки

  • Powers, David MW; McMahon, Graham B. (1983). "Сборник интересных программ на прологе". DCS Technical Report 8313 (Report). Кафедра компьютерных наук, Университет Нового Южного Уэльса.
  • Маннила, Х (1985). «Меры предварительной сортировки и оптимальные алгоритмы сортировки». IEEE Trans. Comput. (C-34): 318– 325. doi :10.1109/TC.1985.5009382.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Run_of_a_sequence&oldid=1228371078"