0

I'm trying to solve a problem on TopCoder. Basically what I need is algorithms for the following:

Let S = [1, 2, ..., n] be a sequence. Let m be less than n.

1) Find all subsequences of S of size m (which is easy - n^m).

2) Find all subsequences of S of size m where the elements are in nondecreasing order.

3) Find all subsequences of S of size m where the elements are not allowed to be repeated (which is also easy - (n!)/((n-m)!).

4) Find all subsequences of S of size m where the elements are in nondecreasing order and are not allowed to be repeated.

Still trying to find formula for parts 2 and 4. A little bit of help will be appreciated.

Thanks in advance.

EDIT:

Original problem:

https://docs.google.com/document/d/1X1VK8Vq2DlqMbZpXHGLoWv9ULfRLVoLtMTRRU5nh5qs/edit?usp=sharing

Kudayar Pirimbaev
  • 1,292
  • 2
  • 21
  • 42

1 Answers1

1

to solve 4), note that w/o repetitions 'non-decreasing' means 'increasing'. partition the set of all sequences of length m built from S without repeating elements into equivalence classes defined by the set of elements occurring in the subsequence. within each equivalence class, there is exactly one increasing sequence (elements ordered by <). the size of each equivalence class is the number of permutations of the elements. the number of 4)-sequences therefore is (n!)/((n-m)! * m!) = n \choose m.

ad 2), model the sequence as a sequence of occurrence counts (including 0 for non-inclusion) for all elements in S. this can be written as a sequence of pairs (s_i, k_i), i=1..n; s_i \in S, k_i \in IN, \foreach p,q in {1..n}, p!=q: s_p != s_q of length exactly n. 'non-decreasing' implies a unique permissible ordering of the sequence given by arranging the elements according to increasing s_i. thus the only degree of freedom is the occurrence count which must obey the constraint of summing to m: sum_{i=1..n} k_i = m.

this problem is equivalent to partitions with (particular) restrictions and counting lattice paths. i don't think there is a closed formula for the number of n-tuples from IN^n meeting this condition.

however, there is a standard algorithm to enumerate all possibilities, eg. here

Community
  • 1
  • 1
collapsar
  • 17,010
  • 4
  • 35
  • 61