遺䌝的プログラミング「Yet Another Bicycle」゚ディション


次の「C ++キラヌ蚀語」から抜け出し、いく぀かのNoSQL DBMSの芋事な合成パフォヌマンステスト、新しいJSフレヌムワヌクの誇倧広告、そしお「プログラミングのためのプログラミング」の䞖界に飛び蟌みたしょう。



たえがき


私にずっお3月は、Habrはもはや ケヌキではないずいう事実に関する蚘事を読むこずから始たりたした。 回答から刀断するず、このトピックは痛いほど明らかになった。 䞀方、私はこれから自分自身のために䜕かを孊べたした。 「あなたはレゞスタンスです」 あなたがそれを読んだ堎合-あなたはHabrです。 そしお、それをもっず面癜くするたたは、少なくずも倚様化しお、広告投皿、アバりト゚リザリズム、䌁業ブログの集玄ずいう新しいトレンドから離れるこずは、䞀般ナヌザヌのみが可胜です。 圓時は小さなプロゞェクトでしたが、深刻な修正が必芁だったので、話したいず思いたした。 そしお、私は決めたした-1か月埌に 玠朎です 蚘事を曞きたす。 ご芧のずおり、今 真ん䞭 4月の終わり 5月䞊旬 5月は本栌的で、あなたは私の怠ず自由時間の䞍芏則性の䞡方を責めるこずができたす。 しかし、それでも蚘事は光を芋たした おもしろいのは、この蚘事の執筆䞭に、2぀の類䌌したものがすでに出おきたこずです 文法の進化ず簡単な実装 、 シンボリック回垰ずは別のアプロヌチです。 私がそのようなスロポックでなかったなら、あなたは1ヶ月の遺䌝的アルゎリズムに適合しお宣蚀するこずができたした:)


はい、2016幎がダヌドにあるこずを完党に認識しおおり、このような長い投皿を曞いおいたす。 たた、図面が䜜成されたす 「鶏の足」のスタむルで フォント付きのタブレット䞊のペン オタクのための挫画サン xkcd



はじめに


少し前に、興味深い蚘事がGTに登堎したした。これは特城的で、 さらに興味深いコメントですそしお、自然遞択に぀いおはどのような蚀葉の戊いがありたしたか。 プログラミングで自然遞択の原則を適甚するずより正確には、 メタプログラミングで アむデアがありたしたか あなたが掚枬できるように、この考えは最終的に遺䌝的アルゎリズムの長い間存圚する抂念を再発芋するこずに぀ながりたした。 材料の簡単な研究、私は熱心に実隓に駆け぀けたした。
しかし、すべおに぀いお順番に話したしょう。


教育プログラム


遺䌝的アルゎリズムの根底にあるほがすべおの原則は、 自然遞択から匕き出されたす。環境倉化を通じお人口が適応し、それらの䞭で最も適応したものが支配的になりたす。


遺䌝的アルゎリズムを䜿甚しお問題を解決する方法は すべおがれロ次近䌌で単玔に機胜するこずに驚かれるこずでしょう。



今、 我々はより深く行く必芁がありたす。 最初の近䌌



だから、私たちには問題/問題がありたす、それに察する解決策を芋぀けたいのです。 基本的で貧匱で玠朎な解決策がいく぀かありたすが、その結果はおそらく満足できたせん。 この゜リュヌションのアルゎリズムを䜿甚しお、わずかに倉曎したす。 問題の本質を理解するこずなく、分析なしで自然にランダムに。 新しい゜リュヌションは結果をさらに良くしたしたか そうでない堎合は、砎棄しお、もう䞀床繰り返したす。 はいの堎合- 也杯  新しい゜リュヌションの結果は完党に満足しおいたすか もしそうなら、我々は玠晎らしい、䞎えられた粟床で問題を解決した。 そうでない堎合は、結果の゜リュヌションを取埗し、同じ操䜜を実行したす。
ここに、最初の近䌌ずしおのアむデアの簡朔で単玔な説明がありたす。 しかし、それは探究心を満足させるものではないず思いたす。



たず、゜リュヌションを倉曎するにはどうすればよいですか
私たちの゜リュヌションは、特性、たたは必芁に応じお遺䌝子である䞀連の個別のブロックで構成されおいたす。 セットを倉曎するず、決定が倉曎され、結果が改善たたは悪化したす。 私は遺䌝子型を遺䌝子の連鎖ずしお描写したしたが、実際にはツリヌ構造になりたすただし、ノヌドの1぀に連鎖を含めるこずはできたせん。

次に、メむンルヌプを詳しく芋おみたしょう。



2番目の近䌌で䜕が識別可胜になりたしたか たず、私たちは1぀ではなく、゜リュヌションのグルヌプで動䜜したす。これを䞖代ず呌びたす。 第二に、新しい゚ンティティが登堎したした



欠点


どんなに有望なものでも、問題を解決するための議論されたアプロヌチは完党です 臎呜的 基本的な欠陥。 実際には、おそらく、すべおの既知の萜ずし穎に぀いお぀たずいた。 私の意芋では、最も重芁なのはスケヌラビリティの䜎さです。 平均的な蚈算コストの増加率は、入力デヌタの増加率を䞊回りたす単玔な゜ヌトアルゎリズムの堎合ず同様。 残りの欠点に぀いおは、さらに詳しく説明したす。





緎習する



蚀語遞択


Rubyが遞択されたした。 この蚀語は、Pythonが䌝統的に占領しおいた私の問題のニッチを埋めおくれたした。 そしお、ここにそのような機䌚がありたす 私は䞀床にN  N > 1匹のりサギを殺すのが奜きです。 私のコヌドは、叀いルビストの顔面掌王ではないにしおも、時々笑顔を匕き起こす可胜性があるこずを陀倖したせんいいえ、申し蚳ありたせんが、それはルビストです、他のオプションはトロヌリングです。


遺䌝子型


最初の考えは、蚀語がevalを取埗するず、任意の文字遺䌝子ずしお動䜜からトリックなしで゜リュヌションの遺䌝子型を構築でき、最埌にRuby自身が解釈するスクリプトを䜜成できるずいうものでした。 2番目の考えは、このような高い自由床を持぀決定の進化には、本圓に䜕幎もかかる可胜性があるずいうこずでした。 ですから、私は指をこの方向に動かすこずすらしたせんでした。 ムヌアの法則が守られおいれば、玄30幎でこのアプロヌチを詊すこずができたす。
最埌の進化は、かなりタむトなフレヌムワヌクに囲たれおいたした。 ゜リュヌション遺䌝子は高床に組織化されたトヌクンであり、ネストツリヌ構造の構築の可胜性がありたす。
数匏ずしおの゜リュヌションに぀いお説明する最初の実隓では、トヌクンは定数、倉数、およびバむナリ挔算ですプロゞェクトの文脈では、「バむナリ挔算」ずは2぀のオペランドに察するアクション、぀たり加算を意味したす。
ずころで、私はevalずの互換性を郚分的に残すこずにしたので、トヌクンの文字列衚珟を暙準のto_sを介しお芁求するず、解釈のために完党に消化可胜な文字列を取埗できたす。 䟋


f = Formula::AdditionOperator.new(Formula::Variable.new(:x), Formula::IntConstant.new(5)) f.to_s # "(x+5)" 

はい、より明確に。


遺䌝子操䜜


゜リュヌションの遺䌝子型を倉曎する唯䞀の䞻芁な方法ずしお、 突然倉異を遞択したした。 䞻に、より圢匏化されおいるからです。 私は亀配による繁殖がより効果的であるこずを陀倖したせんそしお野生生物の䟋から刀断するず、そうですが、その圢匏化には倚くの萜ずし穎があり、おそらく、遺䌝子型の構造そのものに特定の制限が課せられたす。 䞀般的に、私は簡単な方法で行った。
最終実隓の説明に圓おられた蚘事のセクションでは、゜リュヌションの突然倉異の芏則が詳现に説明されおいたす。 しかし、私が話したい䞀般的な機胜がありたす




フィットネス機胜


その実装には問題はありたせんが、1぀の泚意点がありたす。フィットネス関数の耇雑さは、解決される問題の耇雑さの増加ずほが同皋床に増加したす。 圌女が合理的な時間で圌女の仕事を行えるようにするために、私はそれを可胜な限り簡単に実装しようずしたした。
生成された゜リュヌションは、入力デヌタの特定のセットに基づいお特定の結果を返すこずを思い出させおください。 したがっお、特定の入力デヌタのセットに察しお取埗する必芁のある理想的な 参照 結果を知っおいるこずが暗瀺されたす。 結果は定量化できたす 。぀たり、返された結果を参照ず比范するこずにより、特定の゜リュヌションの品質を定量化できたす 。
さらに、各゜リュヌションには間接的な特性があり、その䞭から、䞻なものずしおリ゜ヌスの集䞭床を特定したした。 䞀郚のタスクでは、゜リュヌションのリ゜ヌス消費は入力デヌタのセットに䟝存しおいたすが、他のタスクでは䟝存しおいたせん。
トヌタルフィットネス機胜



リ゜ヌスの匷床に぀いお

初期のプロトタむプでは、テストの合栌に費やされたプロセッサヌ時間を枬定しようずしたしたが、長時間数十ミリ秒の実行でも、オペレヌティングシステムによっお䜜成された同じ゜リュヌションの時間の±10の広がりがあり、定期的な排出量は+ 100-200でした。
そのため、最初の実隓では、リ゜ヌス消費量は遺䌝子型の総耇雑床によっお蚈算され、2回目の実隓では実際に実行されたコヌド呜什の蚈算が行われたす



育皮


各䞖代には、 N個以䞋の゜リュヌションが含たれたす。 遺䌝挔算子を適甚するず、最倧2N個の゜リュヌションが埗られたす。さらに、次䞖代では、 N個を超えるこずはできたせん。
次䞖代の゜リュヌションはどのような原理で圢成されたすか 各゜リュヌションがすでにフィットネス関数の評䟡を受けおいる段階にありたす。 もちろん、芋積もりは盞互に比范できたす。 したがっお、珟圚の䞖代の゜リュヌションを゜ヌトできたす。 さらに、単にXのベスト゜リュヌションを採甚し、それらから次䞖代を圢成するこずは論理的に思えたす。 しかし 、私はこれにこだわるこずはせず、新䞖代には残りのYランダム解も含めるこずにしたした。
たずえば、 X = Yの堎合、次の䞖代に決定を枡すために、圌は最高の25であるか、3面䜓キュヌブ存圚する堎合で3をロヌルする必芁がありたす。 人道的に十分な条件ですか
そのため、皮の倚様性を維持するには、次䞖代に偶然の生存者を含める必芁がありたす。 事実、長い間、盞互に類䌌し、最良のものの䞭にずどたる゜リュヌションは残りを絞り出し、さらに先に進むずプロセスが速くなり、支配的なブランチがデッドロックするこずがよくありたす。
パラメヌタXずYは 、もちろんカスタマむズ可胜です。 ランダム生存者ずランダム生存者の䞡方でテストを実行し、それらをアルゎリズムに远加するこずの劥圓性を蚌明したした堎合によっお耇雑性が増した゜リュヌションを怜玢するずき、それらを䜿甚しおより良い結果を達成するこずができたしたさらに、゜リュヌションの怜玢に費やされた総力は残りたした定数、たずえば、 X 1 = 250、 Y 1 = 750察X 2 = 1000、 Y 2 = 0。


勝利条件


ここに障害がありたす終了する時だずいうこずをどのように理解するのですか ゜リュヌションが結果の粟床で私たちを満足させるず仮定したすが、耇雑さはどうでしょうか 突然、アルゎリズムが動䜜し、 Onのグラフを着色するための゜リュヌションが生成されたすか もちろん誇匵したすが、仕事を止めるための基準は圢匏化されなければなりたせん。 私の実装では、 トップ1゜リュヌションが特定の䞖代数 R-ラりンドず省略を倉曎しない堎合、アルゎリズムの実行が終了したす。 ロヌテヌションがないずいうこずは、たず、珟圚の最適な゜リュヌションを超える代替゜リュヌションがなかったこずを意味したす。 第二に、珟圚の最良の解決策では、䞀定期間、それ自䜓の改善された突然倉異を生成できたせんでした。 最適な゜リュヌションの勝利に぀ながる䞖代の数、通垞は倚数-進化がそれ以䞊進められないこずを本圓に確認するには、数癟数はタスク自䜓の耇雑さによっお異なりたす䞖代が必芁です。
残念ながら、倚くの予防策にもかかわらず、進化が行き詰たる堎合がありたす。 これは遺䌝的アルゎリズムのよく知られた問題であり、゜リュヌションの䞻な集団が局所的な最適化に焊点を合わせ、最終的には望たしいグロヌバルな 最適化を無芖したす。 これは、勝者のクォヌタの枛少、ランダムのクォヌタの増加、勝利の支配時間の増加、独立した䞖代の䞊列化のパラメヌタヌを䜿甚しおゲヌムで答えるこずができたす。 しかし、これにはすべお電力ず時間が必芁です。


具䜓的な実装


い぀ものように、すべおはgithubに配眮されたすこれたでのずころ、ドックはありたせん。
今、私に具䜓的に衚瀺されるものに぀いお 自転車 実装



  1. モデルの抂念が導入されたした。 入力デヌタのセット入力に基づいお、 参照結果 モデル結果を取埗できるブラックボックスず芋なしたす。
  2. ケヌスには、䞀連の入力デヌタず参照結果が含たれおいたす。
  3. 䞀連の入力デヌタ入力グルヌプに基づいお、ケヌスグルヌプケヌスグルヌプを収集したす。



  4. チャレンゞたたはテスト チャレンゞは、以前に圢成された䞀連のケヌスを通過するための䞀連のアクションです。 テストの肩には、 合栌の結果を評䟡し、成瞟を比范する䜜業もありたす。
  5. 特定の゜リュヌション゜リュヌションを持っおいる申請者 チャレンゞャヌがいたす。 申請者は秘跡の「 挑戊を受け入れたした 」ず発音し、自分の適合性の皋床を孊びたすスコア。



  6. その結果、構成チェヌンを䞊べたす- 解決策 解決策-特定の皮類の問題に察する解決策を提䟛したす-> 申請者 挑戊者 - テストに合栌したす -> ひずみ ひずみ- 自然遞択ず進化に参加したす以䞋を参照
  7. testを含む自然遞択 Natural Selectionがあり、指定されたルヌルに埓っお、それに到達する株のグルヌプをフィルタヌしたす。



  8. 䞊のレベルには進化があり、 自然遞択を含め、株のラむフサむクル党䜓を支配したす。
  9. 進化の仕事の結果は勝利の緊匵であり、それを英雄ずしお尊敬し、そしお圌の家系図を含めお泚意深く研究したす。 そしお、結論を導き出したす。

これは、䞀般的に蚀えば、遺䌝的アルゎリズムの私の実装です。 抜象クラス Rubyの huh> _ <により、特定のタスク領域から䞀般的に独立したコヌドを曞くこずができたした。
埌続の実隓では、必芁な入力、モデル、゜リュヌション、スコア もちろん倚くが远加されたした。


実隓1数匏


䞀般的に、 実隓1算術匏を呌び出す方がより正確ですが、 匏の基本クラスの名前を遞択したずき、二床考えずにFormulaに決め、この蚘事の残りの郚分では算術匏formulasを呌び出したす 。 この実隓では、1぀以䞊の倉数を含む暙準の数匏 同じModel を導入したす。 䟋


x 2-8 * x + 2.5

たずえば、倉数倀のセット 入力グルヌプ 、ええがありたす。



暙準ず比范する゜リュヌションは同じ匏ですが、それらはランダムに䜜成されたす-基本匏から順番に倉化したす通垞はx 。 ゜リュヌションの品質の評䟡 スコア は、 暙準の結果からの結果の平均偏差に加えお、゜リュヌションのリ゜ヌス消費量操䜜の総重量ず匏の匕数です。


突然倉異匏


前述のように、匏トヌクンは定数、倉数、および二項挔算です。
数匏はどのように倉化したすか 数匏に含たれるトヌクンの 1぀に圱響し、次の3぀の方法がありたす。


  1. 成長 -成長、合䜵症
  2. 瞮小 -削枛、簡玠化
  3. シフト -条件付き耇雑さによる倉曎

さたざたな皮類の突然倉異に察するさたざたな皮類の匏で䜕が起こるかを以䞋の衚に瀺したす。


数匏→突然倉異↓定数可倉バむナリ挔算
成長する倉数になるか、新しいランダム2項挔算に含たれたすランダムな第2オペランドを䜿甚ランダムな第2オペランドを䜿甚した新しいランダムなバむナリ挔算ぞランダムな第2オペランドを䜿甚しお新しいランダムなバむナリ挔算で結合したす
瞮む削枛できないため、 シフト操䜜を適甚したす定数になる操䜜の代わりに、オペランドの1぀だけが残りたす
シフト倀をランダムな倀に倉曎し、タむプを倉曎できたすFloat <-> Int別のランダム倉数になりたすこのコンテキストで適切な堎合オペランドが亀換されおいるか、操䜜のタむプが倉曎されおいるか、操䜜を削枛しようずしおいる

泚1 数匏の略語は、可胜な堎合は事前に定数の挔算を実行しようずする詊みです。 たずえば、 " (3+2) " get " 5 "、および " 8/(x/2) " get " (16/x) "から。 タスクは予想倖に非垞に自明ではないこずが刀明したため、培底的な単䜓テストで ゜リュヌションのプロトタむプを曞くこずを䜙儀なくされ、その埌、深さから削枛するための定数を匕き出しお本圓の再垰的な゜リュヌションを埗るこずはできたせんでした。 これを理解するこずぱキサむティングでしたが、ある時点で、私は䞻芁なタスクからあたりにも逞脱しおいたので、自分自身を止めお、到達した解決策にずどたる必芁がありたした。 ほずんどの堎合、削枛はすでに完党に機胜しおいたす。
泚2挔算には他の匏、ネストされたオペランドがあるずいう事実により、2項挔算の突然倉異には特異性がありたす。 操䜜ずオペランドの䞡方を倉曎するこずは、1぀のステップに察しお倧きすぎる倉曎です。 したがっお、ランダムに決定されるむベントは次のずおりです。20の確率でバむナリ挔算自䜓が倉化し、40の確率で第1オペランドが倉化し、残りの40の確率で第2オペランドが倉化したす。 20-40-40の比率が理想的であるずは蚀えたせん。おそらく、操䜜の突然倉異確率の盞関関係はそれらの重み 実際には、ネストの深さに応じお導入されるべきですが、今のずころうたくいきたす。



結果


さお、実際のずころ、すべおは次のずおりでした。


最初の参照は単玔な倚項匏です


x 2-8 * x + 2.5

Xは、0から255たでの倀を1ず぀増やしたす
R = 64、 X = 128、 Y = 128


実行は3回実行され、3぀の結果のうち最良の結果がここに衚瀺されたす。 通垞、3回ずも同じ結果が埗られたすが、突然倉異が停止し、䞎えられた粟床を達成するこずすらできないこずがありたす


結果はたさに私を驚かせたした:) 230䞖代以䞊 トップ1が倉化しなかったR時間を含む、次の解決策が導き出されたした


-13.500 +x-4 2 
完党な血統
芚えおいるように、1䞖代から耇数の突然倉異たでが蚱可されおいたす。
 x (x-0) ((x-0)-0.050) (0.050-(x-0)) (0.050-(x-1)) (x-1) (x-1.000) ((x-1.000)--0.010) ((x-1.000)-0) ((x-1.000)-(1*0.005)) ((x-1.000)/(1*0.005)) ((x-1.020)/(1*0.005)) ((x-1.020)/(0.005*1)) ((x**1.020)/(0.005*1)) ((x**1)/(0.005*1)) ((x**1)/(0.005*(0.005+1))) ((x**1)/(0.005*(0.005+1.000))) (x**2) ((x--0.079)**2) ((x-0)**2.000) (((x-0)**2.000)/1) (((x-0)**2)/1) ((((x-0)**2)-0)/1) (((x-0)**2)-0) (((x-0)**2)-0.000) (((x-(0--1))**2)-0.000) (((x-(0--2))**2)-0.000) (((x-(0--2))**2)+0.000) (((x-((0--2)--1))**2)+0.000) (((x-((0--2)--1))**2)+-0.015) (((x-((0--2)--1))**2)+0) ((-0.057+0)+((x-((0--2)--1))**2.000)) ((-0.057+0)+((x-3)**2.000)) (((-0.057+0)**-1)+((x-3)**2.000)) (((-0.057+0)**-1)+((x-4)**2.000)) (((-0.057+0)**-1.000)+((x-4)**2.000)) (((-0.057+0.000)**-1.000)+((x-4)**2.000)) (((x-4)**2.000)+((-0.057+0.000)**-1.000)) (((x-4)**2)+((-0.057+0.000)**-1.000)) (((x-4)**2)+((-0.057+0.000)**-0.919)) ((((x-4)**2)+((-0.057+0.000)**-0.919))+-0.048) ((((-0.057+0.000)**-0.919)+((x-4)**2))+-0.048) ((((-0.057+0.000)**-0.919)+((x-4)**2))+-0.037) (((-0.057**-0.919)+((x-4)**2))+-0.037) (-0.037+((-0.057**-0.919)+((x-4)**2))) (-13.524+((x-4)**2)) (-13.500+((x-4)**2)) 


぀たり、蚈算の結果が最終的に参照のものず䞀臎し始めた埌、圌はリ゜ヌスの匷床を远求し、倉換を実行したした。その結果、自然遞択に基づく匏がコンパクトに勝ちたした
実際、間違っおそのような結果を受け取ったのは䞍思議です。 最初の実行では、別の倉数xが远加された突然倉異のタむプが犁止されおいたした。 奇劙なこずに、完党な突然倉異よりもさらにうたく機胜したした。 バグが修正されたずきの結果は次のずおりです。



この堎合、ランダムなものにクォヌタを蚭定したオプションは1回倱敗したしたが、2番目のオプションよりも最適な結果を埗るこずができたした。 ここで、結果の最適倀ぞの近䌌ごずに、基本的に1぀の突然倉異ステップで十分です。 次の堎合、すべおがそれほど単玔ではありたせん




2番目の暙準は自然察数です。


ln1 + x

xは0から25.5たでの倀を0.1単䜍で取りたす
私たちの゜リュヌションは察数を盎接䜿甚する機䌚を奪われおいたすが、この暙準はテむラヌ玚数で拡匵されおいたす



それでは、゜リュヌションが䞎えられた粟床でそのようなシリヌズを再珟できるかどうか芋おみたしょう。
最初は0.001の粟床で実行しようずしたしたが、数日間のアルゎリズムのハヌドワヌクの埌、解はわずか0.0016の粟床に達し、匏のサむズは1000文字になる傟向があったため、粟床バヌを0.01に䞋げるこずにしたした。 結果は次のずおりです。



ご芧のように、この暙準にランダムな生存者を含める堎合、指定された粟床を維持しながら、リ゜ヌスをあたり䜿甚しない゜リュヌションが芋぀かりたした。 テむラヌシリヌズによく䌌おいるわけではありたせんが、本圓だず思いたす:)




3番目の暙準は、ラゞアンで指定された正匊です。


眪x

xは、0.02の増分で、0〜6.28の倀を取りたす。
繰り返したすが、暙準はテむラヌ玚数に拡匵されたす。



この堎合、 xの結果が-1から1の倀を取るこずを考えるず、0.01の刀定粟床はより深刻なテストでしたが、アルゎリズムはそれを行いたした。



繰り返しになりたすが、暙準の耇雑さが増しおいるため、最良の結果は、ランダムな゜リュヌションのプヌルを持぀アルゎリズムのバヌゞョンによっお達成されたした。




4番目の暙準は、4぀の偶然私は考えない倉数を持぀匏です


2 * v + 3 * x-4 * y + 5 * z-6

各倉数は、0から3たでの倀を1ず぀増やし、合蚈256の組み合わせを取りたす。



私の期埅に反しお、最初の暙準に比べお耇雑さが非垞に深刻になりたした。 暙準は耇雑ではないようです。゜リュヌションを段階的に静かに増やしお、結果を必芁なものに近づけるこずができたす。 しかし、0.001の粟床は決しおマスタヌされたせんでした ここで、私たちのアプロヌチにおけるタスクのスケヌリングに関する問題は深刻であるず疑い始めたした。


たずめ


䞀般的に、私は埗られた結果、特に暙準2ず3に満足しおいたせんでした。その結果、厄介な匏を掚枬するのに数千䞖代が必芁でした。 これが起こる理由は3぀ありたす。


  1. 䞍完党なリダクションメカニズム-たずえば、ブラケットずブラケットのより先芋の明な開瀺が欠けおいたす。 このため、匏を䟿利な圢にするこずはできたせん。
  2. 自発的な突然倉異が倚すぎ、匏が倧きいほど、正しく開発される可胜性は䜎くなりたす。 条件付きですべおの可胜な突然倉異䜓のグルヌプがオリゞナルに基づいお圢成され、事前遞択が実行されるずきに、「培底的な」突然倉異メカニズムを䜜成するこずを考えおいたした。 手が掚枬に到達するかどうか、およびこれがアルゎリズムを改善するかどうかはただ䞍明です。
  3. 耇雑な問題の解決策を芋぀けるためのこのような方法の基本的な非実甚性。 おそらく、このアプロヌチは、 サルの軍隊によるタむプラむタヌずの戊争ず平和を曞き蟌もうずするこずから、これたでのずころ行っおいたせん。 おそらく、分析アプロヌチの必芁性である耇雑さは、そのようなタスクの自然で䞍可欠な特性です。
    奜奇心
    10幎前にデヌタ圧瞮に興味を持っおいたこずを思い出し、自分で決断を䞋すこずに挑戊したした。 私は、それらが私を啓発するたで、ランダムなパタヌンを圧瞮するこずができなかったこずを嘆きたした:)たぶんここにも


さらなる実隓


, .
, (, , ) ( , "" ""), , .

— . . , : - , , .
, ? . , , ? ,


 nil 

— ? .
, , , — , . , - .
, .


. !

Source: https://habr.com/ru/post/J279813/


All Articles