teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

ソース修正

2021/09/15 03:52

投稿

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

4

ソース修正

2021/09/15 03:52

投稿

退会済みユーザー
answer CHANGED
@@ -63,4 +63,8 @@
63
63
 
64
64
  この【命題】、正しいのかな? っていうのがあります。(先の[サンプル](https://replit.com/@suwmn50799/359512terateiru) では、一応(気休めとして)、`(1, 2, 3, 4, 5)` に対する`perm`関数の返す集合の要素数が `5!` の`120`であることを確認していますが。)
65
65
 
66
- 正しいとすれば、その証明はどこかの大学の情報科学科の授業だったり課題の資料を探せば出てきそうですね。
66
+ 正しいとすれば、その証明はどこかの大学の情報科学科の授業だったり課題の資料を探せば出てきそうですね。
67
+
68
+
69
+ **補足2:**
70
+ 上記【命題】の証明は、数学的機能法を使えばできそうです。(ちゃんと書いてみたわけではないけど)

3

ソース修正

2021/09/15 03:52

投稿

退会済みユーザー
answer CHANGED
@@ -59,7 +59,7 @@
59
59
  また、上記の`perm(nums)`がこの問題の解のひとつであることを主張するには、厳密には、以下の命題の証明が必要と思います。
60
60
 
61
61
  【命題】
62
- 昇順に整列された順列 `P0 = (1, 2, ・・・ , n)` を並べ替えてできる任意の順列 `P = (f(1), f(2), ・・・ f(n))` (fは集合{1, 2, ・・・ n}で定義された、一対一かつ上への写像)とする。また隣接する`(i-1)`番目の要素と`i`番目の要素を交換する操作を `s(i)` とする。このとき、`P0` に対して、`s(i)`を有限回適用することで、任意の `P` にできる。
62
+ 昇順に整列された順列 `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` にできる。
63
63
 
64
64
  この【命題】、正しいのかな? っていうのがあります。(先の[サンプル](https://replit.com/@suwmn50799/359512terateiru) では、一応(気休めとして)、`(1, 2, 3, 4, 5)` に対する`perm`関数の返す集合の要素数が `5!` の`120`であることを確認していますが。)
65
65
 

2

ソース修正

2021/09/15 02:38

投稿

退会済みユーザー
answer CHANGED
@@ -53,4 +53,14 @@
53
53
 
54
54
  というイメージの先にある(いわば、脳みそに汗をかいた)もの**ではない**です。タプルを集合(set)の要素にできて、集合(set)は`in` 演算子によって、ある値がその集合に含まれるかを判定できるという、Python組み込みのデータ構造の力に頼った解です。
55
55
 
56
- もう少し賢いコードが書けたら追記します。
56
+
57
+ **補足:**
58
+
59
+ また、上記の`perm(nums)`がこの問題の解のひとつであることを主張するには、厳密には、以下の命題の証明が必要と思います。
60
+
61
+ 【命題】
62
+ 昇順に整列された順列 `P0 = (1, 2, ・・・ , n)` を並べ替えてできる任意の順列 `P = (f(1), f(2), ・・・ f(n))` (fは集合{1, 2, ・・・ n}で定義された、一対一かつ上への写像)とする。また隣接する`(i-1)`番目の要素と`i`番目の要素を交換する操作を `s(i)` とする。このとき、`P0` に対して、`s(i)`を有限回適用することで、任意の `P` にできる。
63
+
64
+ この【命題】、正しいのかな? っていうのがあります。(先の[サンプル](https://replit.com/@suwmn50799/359512terateiru) では、一応(気休めとして)、`(1, 2, 3, 4, 5)` に対する`perm`関数の返す集合の要素数が `5!` の`120`であることを確認していますが。)
65
+
66
+ 正しいとすれば、その証明はどこかの大学の情報科学科の授業だったり課題の資料を探せば出てきそうですね。

1

ソース修正

2021/09/14 23:16

投稿

退会済みユーザー
answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  > nums[i-1], nums[i] = nums[i], nums[i-1]
6
6
 
7
- を順次適用していくループによって順列の集合を作っていき、新しい順列が作られなくなったところでループを終了させます。最初に与えられる`nums`および`nums`の要素を交換して出来る順列をsetの要素にしたいので、リストではなくタプルで表すことにしました。
7
+ を順次適用していくループによって順列の集合を作っていき、新しい順列が作られなくなったところでループを終了させます。最初に与えられる`nums`および`nums`の要素を交換して出来る順列をsetの要素にしたいので、リストではなくタプルで表すことにしました。
8
8
 
9
9
  まず、
10
10