回答編集履歴

5

ソース修正

2021/09/15 03:52

投稿

退会済みユーザー
test CHANGED
@@ -136,4 +136,4 @@
136
136
 
137
137
  **補足2:**
138
138
 
139
- 上記【命題】の証明は、数学的機能法を使えばできそうです。(ちゃんと書いてみたわけではないけど)
139
+ 上記【命題】の証明は、数学的帰納法を使えばできそうです。(ちゃんと書いてみたわけではないけど)

4

ソース修正

2021/09/15 03:52

投稿

退会済みユーザー
test CHANGED
@@ -129,3 +129,11 @@
129
129
 
130
130
 
131
131
  正しいとすれば、その証明はどこかの大学の情報科学科の授業だったり課題の資料を探せば出てきそうですね。
132
+
133
+
134
+
135
+
136
+
137
+ **補足2:**
138
+
139
+ 上記【命題】の証明は、数学的機能法を使えばできそうです。(ちゃんと書いてみたわけではないけど)

3

ソース修正

2021/09/15 03:52

投稿

退会済みユーザー
test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  【命題】
122
122
 
123
- 昇順に整列された順列 `P0 = (1, 2, ・・・ , n)` を並べ替えてできる任意の順列 `P = (f(1), f(2), ・・・ f(n))` (fは集合{1, 2, ・・・ n}で定義された、一対一かつ上への写像)とする。また隣接する`(i-1)`番目の要素と`i`番目の要素を交換する操作を `s(i)` とする。このとき、`P0` に対して、`s(i)`を有限回適用することで、任意の `P` にできる。
123
+ 昇順に整列された順列 `P0 = (1, 2, ・・・ , n)` を並べ替えてできる任意の順列 `P = (f(1), f(2), ・・・ f(n))`(ただしfは集合A={1, 2, ・・・ n}としてAからAへの一対一かつ上への写像)とする。また隣接する`(i-1)`番目の要素と`i`番目の要素を交換する操作を `s(i)` とする。このとき、`P0` に対して、`s(i)`を有限回適用することで、任意の `P` にできる。
124
124
 
125
125
 
126
126
 

2

ソース修正

2021/09/15 02:38

投稿

退会済みユーザー
test CHANGED
@@ -108,4 +108,24 @@
108
108
 
109
109
 
110
110
 
111
- もう少し賢いコードが書けたら追記します。
111
+
112
+
113
+ **補足:**
114
+
115
+
116
+
117
+ また、上記の`perm(nums)`がこの問題の解のひとつであることを主張するには、厳密には、以下の命題の証明が必要と思います。
118
+
119
+
120
+
121
+ 【命題】
122
+
123
+ 昇順に整列された順列 `P0 = (1, 2, ・・・ , n)` を並べ替えてできる任意の順列 `P = (f(1), f(2), ・・・ f(n))` (fは集合{1, 2, ・・・ n}で定義された、一対一かつ上への写像)とする。また隣接する`(i-1)`番目の要素と`i`番目の要素を交換する操作を `s(i)` とする。このとき、`P0` に対して、`s(i)`を有限回適用することで、任意の `P` にできる。
124
+
125
+
126
+
127
+ この【命題】、正しいのかな? っていうのがあります。(先の[サンプル](https://replit.com/@suwmn50799/359512terateiru) では、一応(気休めとして)、`(1, 2, 3, 4, 5)` に対する`perm`関数の返す集合の要素数が `5!` の`120`であることを確認していますが。)
128
+
129
+
130
+
131
+ 正しいとすれば、その証明はどこかの大学の情報科学科の授業だったり課題の資料を探せば出てきそうですね。

1

ソース修正

2021/09/14 23:16

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- を順次適用していくループによって順列の集合を作っていき、新しい順列が作られなくなったところでループを終了させます。最初に与えられる`nums`および`nums`の要素を交換して出来る順列をsetの要素にしたいので、リストではなくタプルで表すことにしました。
13
+ を順次適用していくループによって順列の集合を作っていき、新しい順列が作られなくなったところでループを終了させます。最初に与えられる`nums`および`nums`の要素を交換して出来る順列をsetの要素にしたいので、リストではなくタプルで表すことにしました。
14
14
 
15
15
 
16
16