Задача заключается в том, чтобы переставлять элементы в списке, не переставляя при этом предыдущий елемент. Например, дан список:
x =

На первом шаге результатом будет следующий список:
1, 2, 3, 4, 5
1, 2, 3, 5, 4
1, 2, 4, 5, 3
1, 3, 4, 5, 2
2, 3, 4, 5, 1

На втором шаге мы рассматриваем по уровням. Берем первый элемент списка new_x и делаем перестановку сначала в нем, затем во втором елементе и тд. На примере первого элемента списка new_x:
1, 2, 3, 4, 5
1, 2, 4, 3, 5
1, 3, 4, 2, 5
2, 3, 4, 1, 5

На примере второго элемента списка new_x:
1, 2, 3, 5, 4
1, 2, 5, 3, 4
1, 3, 5, 2, 4
2, 3, 5, 1, 4

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

Google Docs: PDF

Этот же вопрос находится на http://www.askdev.ru.