0

事前にこれを間違って表現している場合は非常に申し訳ありませんが、データセットが大きく、分析しようとしていますが、ほとんどのデータが正しくないため、正しいデータを選択する方法を理解するのに助けが必要です。

これをさらに明確にするためのいくつかの情報があります。たとえば、私は次のようにしています。

color  value   quantity
red       20    2
blue    5   8
green   10  2

total       100

値と合計だけが与えられた場合、私は36の可能な答えがあることがわかります:

#1 Found : 20.0*0.0 red + 5.0*0.0 blue + 10.0*10.0 green = 100.0
#2 Found : 20.0*0.0 red + 5.0*2.0 blue + 10.0*9.0 green = 100.0
#3 Found : 20.0*0.0 red + 5.0*4.0 blue + 10.0*8.0 green = 100.0
#4 Found : 20.0*0.0 red + 5.0*6.0 blue + 10.0*7.0 green = 100.0
#5 Found : 20.0*0.0 red + 5.0*8.0 blue + 10.0*6.0 green = 100.0
#6 Found : 20.0*0.0 red + 5.0*10.0 blue + 10.0*5.0 green = 100.0
#7 Found : 20.0*0.0 red + 5.0*12.0 blue + 10.0*4.0 green = 100.0
#8 Found : 20.0*0.0 red + 5.0*14.0 blue + 10.0*3.0 green = 100.0
#9 Found : 20.0*0.0 red + 5.0*16.0 blue + 10.0*2.0 green = 100.0
#10 Found : 20.0*0.0 red + 5.0*18.0 blue + 10.0*1.0 green = 100.0
#11 Found : 20.0*0.0 red + 5.0*20.0 blue + 10.0*0.0 green = 100.0
#12 Found : 20.0*1.0 red + 5.0*0.0 blue + 10.0*8.0 green = 100.0
#13 Found : 20.0*1.0 red + 5.0*2.0 blue + 10.0*7.0 green = 100.0
#14 Found : 20.0*1.0 red + 5.0*4.0 blue + 10.0*6.0 green = 100.0
#15 Found : 20.0*1.0 red + 5.0*6.0 blue + 10.0*5.0 green = 100.0
#16 Found : 20.0*1.0 red + 5.0*8.0 blue + 10.0*4.0 green = 100.0
#17 Found : 20.0*1.0 red + 5.0*10.0 blue + 10.0*3.0 green = 100.0
#18 Found : 20.0*1.0 red + 5.0*12.0 blue + 10.0*2.0 green = 100.0
#19 Found : 20.0*1.0 red + 5.0*14.0 blue + 10.0*1.0 green = 100.0
#20 Found : 20.0*1.0 red + 5.0*16.0 blue + 10.0*0.0 green = 100.0
#21 Found : 20.0*2.0 red + 5.0*0.0 blue + 10.0*6.0 green = 100.0
#22 Found : 20.0*2.0 red + 5.0*2.0 blue + 10.0*5.0 green = 100.0
#23 Found : 20.0*2.0 red + 5.0*4.0 blue + 10.0*4.0 green = 100.0
#24 Found : 20.0*2.0 red + 5.0*6.0 blue + 10.0*3.0 green = 100.0
#25 Found : 20.0*2.0 red + 5.0*8.0 blue + 10.0*2.0 green = 100.0
#26 Found : 20.0*2.0 red + 5.0*10.0 blue + 10.0*1.0 green = 100.0
#27 Found : 20.0*2.0 red + 5.0*12.0 blue + 10.0*0.0 green = 100.0
#28 Found : 20.0*3.0 red + 5.0*0.0 blue + 10.0*4.0 green = 100.0
#29 Found : 20.0*3.0 red + 5.0*2.0 blue + 10.0*3.0 green = 100.0
#30 Found : 20.0*3.0 red + 5.0*4.0 blue + 10.0*2.0 green = 100.0
#31 Found : 20.0*3.0 red + 5.0*6.0 blue + 10.0*1.0 green = 100.0
#32 Found : 20.0*3.0 red + 5.0*8.0 blue + 10.0*0.0 green = 100.0
#33 Found : 20.0*4.0 red + 5.0*0.0 blue + 10.0*2.0 green = 100.0
#34 Found : 20.0*4.0 red + 5.0*2.0 blue + 10.0*1.0 green = 100.0
#35 Found : 20.0*4.0 red + 5.0*4.0 blue + 10.0*0.0 green = 100.0
#36 Found : 20.0*5.0 red + 5.0*0.0 blue + 10.0*0.0 green = 100.0

ご覧のとおり、可能性としては正しい答えが得られますが、他の多くの答えも得られます。ここで、もう1つ赤を追加すると(つまり、赤の合計は3になります)、49の結果が得られますが、最初の結果セットとの関係を考慮に入れると、2番目のセットの結果の一部はありそうにありません。より多くのデータ結果が得られると、機能しない結果をより正確に削除できると思います。

結果をもっと意味のあるものに絞り込むための調査や標準的なアプローチがあるかどうかを調べようとしています。100%確信はありませんが、各クエリはデータだけでなくあなたの履歴に対しても実行されるため、おそらくグーグルがこの例かもしれないと思いました(私は非常に低いランクのウェブサイトを持っており、それをクリックして検索したとき繰り返しになりますが、常に一番上に表示されますが、友達のコンピューターで検索すると、同じサイトが一番下に表示されます)。グーグルが複数の検索クエリとの関係を構築する方法かもしれないと思いました。同様のアプローチを使用して、上記のデータから正しくない結果を削除することができます。

誤解してすみません。私はアルゴに少し慣れていないので、これを説明するのに苦労しています。意味がわからない場合はお知らせください。

前もって感謝します!

4

2 に答える 2

2

私がこれを正しく理解した場合、あなたはこのような方程式を解きます

R*r + G*g + B*b = 100

与えられたR、G、Bの整数値に対して、r、g、bも整数値であるという制約があります。

方程式が1つと変数が3つしかないため、単一の解ではなく解空間を取得し、アルゴリズムを適用して正しいまたは最良の解を選択します。

また、r、g、bの値である可能性が高いr0、g0、b0の値があるようです。

思いつく必要があるのは、候補解がどれだけ良いか悪いかを示す適応度関数です。

1つの例は次のようになります(値が小さいほど、より良い解決策を意味します)

(r-r0)^2 +(g-g0)^2 +(b-b0)^2 

これは基本的に、可能性のある値に近いほどソリューションが優れていることを示しています。

バリアントは

(r-r0)^2 +(g-g0)^2 +(b-b0)^2 + c*C

ここで、Cはユーザーが選択する定数であり、cは考えられるソリューションとは異なる値の数です。これにより、2つまたは3つの値を変更するものと比較して、1つの値のみを変更する候補者の適合性が高くなります。

適応度関数を取得したら、適応度が最も低いソリューションを選択します。

于 2011-06-07T05:08:19.227 に答える
0

この問題は線形ディオファントス方程式と呼ばれます。詳細については、こちらをご覧ください

于 2011-06-07T11:01:16.433 に答える