質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

699閲覧

組み合わせを列挙するアルゴリズム

NORMSENSEI

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/09 02:39

x1+x2+x3+…+xm=N
各xi>=Lを満たす整数の組をすべて列挙したいのですが、
pythonでとにかく高速に列挙するにはどうしたらよいですか
m,N,Lは整数

(例)
x1+x2+x3=4 xi>=0
[4,0,0]
[3,0,1]
[3,1,0]
[2,0,2]
[2,1,1]
[2,2,0]
[1,0,3]
[1,1,2]
[1,2,1]
[1,3,0]
[0,0,4]
[0,1,3]
[0,2,2]
[0,3,1]
[0,4,0]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/10/09 06:07

モジュールは使わない前提でしょうか?
退会済みユーザー

退会済みユーザー

2020/10/09 06:18

m,N,Lの範囲はどれくらいですか?
NORMSENSEI

2020/10/09 06:33 編集

meg_さん モジュール使ってもありです。 わたしはitertools.combinations_with_replacement というのをつかって要素を数えるみたいなことをしたのですが、 効率悪いことしているのではないかと思いました。
NORMSENSEI

2020/10/09 06:31

otsuki_kさん L,m,Nに関しては引数として Lにかんしては0以上の整数 m,Nにかんしては1以上の整数 と想定しています。
退会済みユーザー

退会済みユーザー

2020/10/09 06:55 編集

整数の組の数は(N-m*L+m-1)C(m-1)個なので、 たとえばN=50、m=25、L=0でも1,000,000,000,000,000,000個以上列挙することになります。 詳しくは組み合わせ爆発で検索してください それを本当にすべて列挙したいのですか?
NORMSENSEI

2020/10/09 07:01 編集

重複組み合わせの考え方で組み合わせが増えるのはわかりますが、 すべて列挙したいです。 さすがにN=50まではない想定ですが、 組合せ最適化みたいなことにとりくんでいて、 全部列挙して最適解を出すのにどれくらいかかるのかためしたいのです。
NORMSENSEI

2020/10/09 08:09

ご回答ありがとうございました
toast-uz

2020/10/16 15:26

効率が悪いと、ご自分で思われているコードを、提示していただけますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問