シンプルさの簡単な説明。 第1章:理論的にシンプル

シンプルさの簡単な説明



画像

MAINの質問に答えるために訪問しなければならないエリアを含むCAP



まえがき



私はよくアドバイスを聞いた:それを簡単にします。



そしてsimpleはどういう意味ですか? オブジェクトXが単純であると言うとき、Xに対する期待は何ですか? あることは別のことよりも簡単だと言うとき、どのように評価するのでしょうか?



どちらが簡単ですか:

「5語の短い文」または「deoxyribonucleic」という語ですか?

「6 * 5」または「481」?



または:

設定画面があります。 そのうちの5つはスケジュールに関連し、残りの5つは通知に関連しています。 メインメニューで「スケジュール」と「通知」の項目を個別に作成する必要がありますか? または、1つの画面に10ポイントすべてを残しますか? ユーザーにとって何が簡単になりますか?



これは主観的なものだと言えます。 これは特定の「シンプル感」によって決定され、ある人にとっては何かが単純であり、別の人にとっては複雑であるということです。



では、先生がもっと簡単に何かを説明するのに時間を費やす理由を教えてください。 なぜテキストを編集し、簡単にしようとするのですか? プログラマーがコードの確認に時間を費やして、どのソリューションの方が理解しやすく、拡張しやすいのかを見つけようとする理由



単純さが評価と何らかの関係がある場合、最良の戦略は説得です。 テキストが単純であると読者に信じさせましょう。 または同僚は、私たちの決定は難しくないと信じていました。



これにより、仕事の結果との相互作用が質的に変わりますか?



いや



あなたのテキストは簡単だと考えられているので読みやすくなりません。 あなたの周りの誰もがその複雑さはスツールのそれと同じだと思っているとしても、コードを扱うのは簡単ではありません。



インタビューで、会社にはきれいなコードと優れたドキュメントがあると言われ、それを信じていた場合、これはコードの操作の単純さに影響しません。

さらに、コードがきちんと書かれていてドックがあると部門全体が信じているとしても、これは結果に影響しません。 彼らのコードに対する彼らの信念は間違っているかもしれません。



コードがスパゲッティだった場合-スパゲッティになります。 「ドキュメント」が「ここに2つの数字を追加しました」という形式のコメントである場合-コードにはドキュメントがありません。

そして、欲望や自信などはここでは役に立ちません。



これはそれぞれ2つのカップケーキを2箱しか持っていない場合、5人の友人に1つのカップケーキを与えることができないほぼ同じ理由ruenで機能しません。 2 + 2 = 5という1年間、会社全体を瞑想する場合でも、カップケーキの悲しい状況は変わりません。



もう一度。 オブジェクトがあり、その特徴のいくつかは、あなたがそれを単純だと思うruことができます。 そして明日、評価が変わり、「難しい」マークで停止した場合、オブジェクトは気にしません。



単純さや複雑さは、私たちの期待に依存しないと結論付けることができます。 むしろ、反対に、オブジェクトはどの特性を与えるかを決定します。



単純だと確信しているru場合、実際にどのようなオブジェクトが表示されると予想されるかを理解したかったのです。 そしてその逆に、実際のオブジェクトのどのような特性が、私はそれを単純であると考えさせます。

なんで? まあ、これは私の人生を楽にするでしょうか?)



初めて読む場合
統計
読書時間:〜30分。

文字数:〜25k。



記事の読み方
全般
あなたの目には権威がありません。 私は意図的に自分に関する情報を提供しません。 この記事を1年生の学生が書いたように読んでほしい。 ある意味では、そうです。



理解できない、または物議を醸す瞬間を見つけたら、それについて書いてください。 これは、この記事の改善に役立ちます。



そして、決して私を信じないでください。 私の言葉が私の無実をあなたに納得させたくありません。 私は彼らの意味があなたにその真実を納得させることを望んでいます。



規約について
  1. 目次。 各章はそれから始まります。 この章で説明されている問題を簡単にリストし、関連するサブセクションに移動するためのリンクを提供します。
  2. 外部リソースへのリンク。 それらは*単語またはフレーズ* 言語コード付きのリンク)または通常のリンクとして表示されます 。 あなたが選択できるように、ロシア語または英語のソースを読むようにしました。 残念ながら、私は常に両方を見つけることができませんでした。 これは、第2章で特に顕著になります。 Runetは神経生物学に関する関連情報が不十分です。
  3. ネタバレ「ブリーフフライ」。 この章のサブセクションの名前の直後にあります。 その目的は、すでに記事を読んでいる場合に、記事の作業を簡素化することです。 これを使用して、記事をすぐに理解できます。 しかし、注意してください! まず、サブセクション自体を読まないと、そこに書かれていることを理解できない場合があります。 これは簡潔な論文であり、パスruenではありません。 第二に、さらに危険です-あなたはすべてを理解しているように見えるかもしれません。 誤解とは何か、なぜ誤解が生じるかについては、次の章で説明します。
  4. ネタバレ「IT'S MATHMATICS TIME」。 数学的な計算でおびえさせないために使用されます。 それは、テキスト形式で提示される前の情報を複製しますが、より形式的な方法です。






一般的な情報
シリーズについて
簡単な説明は簡単です。これは、「人間の観点から見ると、「シンプル」とは何ですか?」という共通の質問によって結ばれた一連の記事です。



現時点では、3つの章が計画されています。



  • 理論的にシンプル-この章は、質問の文言とそれに関連する主な定義に専念します。 あなたはここにいます。
  • Machine Ex Homoは、私たちの意識を見る章であり、上位の行動レベルから始まり、脳の神経接続で終わります。 この章はすでに作成されており、編集中です。
  • 読書だけ-スキーム、コード、グラフ、テキストなど、あらゆるモデルを読む人々に捧げられています。 これは、シリーズの最初の実用的な章になります。ここでは、知識を適用し、理解を促進するために情報をどのように構成すべきかを見ていきます。 執筆プロセスを開始します。


これは、答えを見つけたい質問の完全なリストではありません。 しかし、私はそれらから始めたいです。



この問題に対処する理由については、別の記事が公開されます。 著者の動機と彼がこのシリーズをどのように見ているかについてお話ししましょう。 この記事は、最初の3つの章の後に書かれます。



なぜこの記事が表示されたのですか?
私はそのようなフレーズに何度も出くわしました。「テキストを簡単に書く」または「決定を簡単にする」です。

紛争の議論として「ただ」という言葉を聞いたことがあります。「簡単だからやった!」 しばしば、反対者は「彼らはもっと簡単だ」と証明しようとしましたが、いくつかの奇妙な議論がこれにつながりました。



しかし、自分の意見で「単純」とはどういう意味かを人々に尋ねたとき、私は聞いた:

「これは主観的です。」 または「これは常識です。」 または「まあ、それぞれの人のためにさまざまな方法で。」

かなり頭のいい人が主観を正確に判断して考えることができないことについて、非常に長い間議論しているという事実に混乱しました。 結局のところ、音楽の好みなどのフレーバーの場合、なぜ彼らはそれに時間を費やすのですか? 繰り返しますが、これらは賢い人たちであり、お互いの音楽的な好みについてホリバーに時間を費やすことはありませんでした。



私はこれについて多くのことを考えましたが、1年後、1つの簡単な考えが頭に浮かびました。シンプルさがまだ測定できるオブジェクトの特性であるとしたらどうでしょうか。 これにより、すべての紛争を解決し、膨大な時間を節約できます。 そしてそれをまとめて......



簡単な説明に3章かかるのはなぜですか? 短くできませんでしたか?
現実は複雑だからです。 そして、この記事の複雑さは、それが記述する現実の部分の複雑さに直接依存します。



このシリーズは、何千時間もの情報の検索と結合の結果です。 そして、私が彼女のために使った仕事をした人々が何十万時間も費やしました。



数時間かけてシリーズ全体を読みます。 正直なところ、すべてのリンクをたどってください。



私たちの質問に対する答えを何百回も得るためにあなたが費やす時間と労力を減らしました。 そして、正しく設定するのにかかる時間を節約しました。



これが可能な限り最良の説明であるかどうかはわかりません。 私の仕事はまだ終わっていません。 おそらくその過程で、それを改善する方法を理解するでしょう。 現時点では、これは私が持っている最も簡単な説明です。





第1章理論的にシンプル



この章では、次のトピックについて説明します。





この章の最後で、OccamのRazor( Blade Runner )について少し説明します。 シンプルさに関する記事は、この原則に言及せずに奇妙に見えたでしょう。



1.1質問の順序



簡単に
考えられる答えを制限しない質問は役に立ちません。

「単純な」特性には、2つの意味があります。



1)小学校

2)簡単なアクション



第二に興味があります。



次の質問:アクションの複雑さを評価する方法と、それをオブジェクトに関連付ける方法は?



私たちの研究は質問から始まります。 質問を正しくすることは非常に重要です。 小さな余談:



-わかりました、深い考え、単純さの主な条件は何ですか?

-私はそれについて考える必要があります。

...

...

数百万年後...

- < 42



// 1つの美しい本に基づく



答えはありますが、何も得られません。 彼に関するすべての情報は質問に含まれていますが、質問はあまり具体的ではありませんでした。 それを証明することはできません < 42 -本当に主な条件と反対を示すことはできません。



質問は、可能な回答の範囲を制限する必要があります。



「単純なものは何ですか?」は、それほど具体的な質問ではありません。 それを明確にしましょう。 記事の冒頭で、このパスの一部を既に実行しました。



オブジェクトXが単純であると言うとき、それから何を期待しますか?



私の観察によると、主に2つのケースがあります:



  1. Xは、コンポーネントに分解されないオブジェクトです。 ここでは、「単純」という単語を「小学校」という単語に置き換えることができます。

    画像

    これはレンガです。 そして、ある意味、彼はシンプルです。
  2. Xは、必要なアクションを簡単に実行できます。 たとえば、ソファは横になりたい場合はシンプルで、9階に上げる必要がある場合は複雑です。


オブジェクトが基本的な場合は理解できます。 しかし、アクションのコンテキストの複雑さに興味がある場合はどうでしょうか?



考え直してみましょう。 オブジェクトでアクションを実行します。



この文には3つの主要なエンティティがあります。





次に、次の質問に興味があります。





以下に回答します。



1.2使いやすさ



簡単に
アルゴリズムの複雑さとの類推で行動します。



私たちの行動の複雑さは、それに投資された行動の複雑さの合計です。



アクションのシーケンスは、アルゴリズムと呼ばれます。



アクションに結果があります-これは、アクションが実行されたシステムの状態の変化です。



インターフェイスの概念を使用して、アクションとオブジェクトを相互接続できます。 インターフェースは、それを実装するオブジェクトで可能なアクションに関する情報を格納するオブジェクトです。



アルゴリズムの複雑さとは異なり、基本操作を見つけることはできません。アクションの実行者を考慮する必要があります。



次の質問は、実行者がアクションにどのような影響を与えるかです。



アクションを見てみましょう。



アクションの単純さは、その複雑さに反比例するものです。 アクションが複雑になるほど、単純ではなくなります-明らかです。 次の質問に答えます。



アクションの複雑さを判断する方法は?



アクションで何ができますか? 他のシーケンスに分解できます! アクション「記事を読む」は、「最初の段落を読む」、「2番目を読む」などに分けることができます。 それらは、順番に、「最初の文を読む」、「2番目の文を読む」として分解します...



画像



同様に、複雑さの違いが私たちにとって重要ではなく、実行されるオブジェクトに依存しないアクション(レターを読むなど)に到達します。 このようなアクションを基本と呼びます。



次に、特定のオブジェクトのアクションの複雑さを、それが分割された基本アクションで測定できます。



アクションは、アクションの同じシーケンスに分割されている場合、同等です。



アクションの特徴は他に何ですか?



アルゴリズム



別のアクションを構成する一連のアクションの説明は、アルゴリズムruenと呼びます。



アルゴリズムは、たとえば次のように一般的に説明できます。

読書:テキストがなくなるまで文章を読みます。

この形式では、読書は多くのテキストに適用できます。



ただし、ご理解のとおり、「文章を読む」アクションの数は、テキスト内の文章の数に依存します。



結果



アクションは何らかの理由で実行され、何かにつながります。 アクションに結果を持たせましょう!



その結果、アクションが発生したシステムの状態が変化します。 スイッチを押すと、スイッチが「オン」状態に移行し、キッチンで点灯するライトがこのアクションの結果です。 あなたはその言葉を読んで、その結果はあなたの脳の状態の変化です。



異なるアクションが同じ結果につながる可能性があります。



画像



オブジェクトとのコミュニケーション



オブジェクトに戻ります。 すでに述べたように、さまざまなアクションを実行できます。 このエンティティまたはそのエンティティが「意図されている」アクションを理解する方法が必要です。



例から始めましょう。



「そして、このスーツケースをどのようにドラッグしますか?」

-彼は横にペンを持っています!



ハンドルはスーツケースの外側にある一片の革で、リベットで釘付けされています。 しかし、この場合は気にしません。 スーツケースに持っていける物があるのではないかと心配しています。



このようなすべてのオブジェクトをハンドルと呼びます。 カップ、ドア、スーツケース、またはバケツに置くことができます。



画像



例から2つのペンの説明があるという結論に達しました。



  1. 革のストリップがスーツケースに釘付けされたリベットのように。
  2. 取り組む対象の概念として。


最初は実装en )の記述です。



2番目は、インターフェイスの説明です。



インターフェイスは、それを実装するオブジェクトと対話する方法に関する情報を格納するオブジェクトです。



なぜ必要なのですか? 簡単です。ほとんどの場合、オブジェクトの実装方法には関心がありません。

ライトをオンにしたいときは、スイッチを探しています。どのように機能するかは関係ありません。重要なことは、その状態をオン/オフに切り替えることができることです。

ボタンが表示されたら、クリックできることがすでにわかっています。

どこかにペンがあると言われたとき、あなたはそれを取ることができることをすでに知っています。

そして、それは非常に便利です。



まとめ



アクションは、アルゴリズムを定義する他のアクションのシーケンスです。 アクションの結果は、何らかのシステム変更です。



アクションの複雑さは、特定のオブジェクトに対するアルゴリズムの基本アクションの数に等しくなります。



オブジェクトとアクションの関係により、オブジェクトのインターフェースが決まります。 オブジェクトで実行できるアクションに関する情報を保存します。



次の質問:

アクションとそのエグゼキューターの関係は何ですか?



1.3客観的な主観性



簡単に
アクションの実行者が異なる状況でオブジェクトの複雑さを正しく評価するために、特定のアーティストまたは実行者のグループごとにアクションを設定できます。



次の質問は、今複雑さを計算する方法ですか?



あなたは合理的に気付くかもしれません:



「しかし、同じアクションを実行すると、結果が異なる可能性があります! 物理学の教授がひも理論の記事をすぐに読み、すべてを理解できれば、同じアプローチで何も達成できません。 そして、同様の結果を得るには、言葉で定義を探し、他の記事を読み、もっと多くの行動をとる必要があります。」



これは良い点です。 答えがあります。



他のタスクと同様に、私たちのものには初期条件があります。 それらを変更すると、タスク自体も変更されます。 そして、これはその実装が異なるアクションを必要とするという事実につながります。



あなたは記事を読んでいます。 数ページを読んで、脇に置いたとします。 ここで、記事を読むために、アクションを少なくする必要があります。 しかし、記事自体の複雑さはこれから変更されましたか? いや それで実行するアクションが変更されました。 「記事を読んで」、「記事を最後まで読んで最後まで読んだ」というものでした。



アクションで何をすべきか? 望ましい結果を修正します。 覚えているように、さまざまな方法で到達できます。



さらに、パフォーマーをほぼ同じグループに分けることができます。 無限の数の出演者がいなければ、そのようなグループの数は限られています。



次に、各グループについて、それを望ましい結果に導くアクションを説明します。



パフォーマーのグループごとにアクションのセットを取得しました。 しかし、今は複雑さをどうするか?



1.4おそらくちょうど



簡単に
複数のパフォーマーがいる状況では、オブジェクトの複雑さの数学的期待値を計算できます。 これを行うには、さまざまな実行者によって実行されるアクションの可能性を評価する必要があります。



ベイズ定理ruen



次の質問:使用するオブジェクトの記述方法は?



一連のアクションがあります。 それらのそれぞれは、パフォーマーの特定のグループに属します。 特定のオブジェクトごとにこれらのアクションのそれぞれの複雑さを計算する方法を知っています。



しかし、アーティストがグループの1つに入る確率を設定しようとするとどうなりますか?

タスクは、古典的な理論的タスクに変わります。



アクションの複雑さの大きさがあります。 ランダムな人が各アクションを実行する確率があります。



複雑さの「平均値」を見つけることができます。 これは、いわゆる数学的期待ruです。 これを行うには、オブジェクトとのアクションの各複雑度を、その発生確率で乗算する必要があります。



これらの確率をどこから取得するか、誰がオブジェクトで具体的にアクションを実行するかがまだわからない場合にパフォーマーをグループに分割する方法は?いい質問です!



その考察は私たちの記事の範囲を超えていますが、私の意見では興味深い例を挙げます。



あなたは著者です。そしてあなたの仕事は、テーマ別のセクションがあるサイトで記事を書くことです。記事を投稿すると、一般フィードおよびその「セクション」のフィードに表示されます。セクションには購読者がいて、サイトの視聴者の一部を占めています。共有フィードは全員に表示されます。セクションにサブスクライブしている人はそのトピックを理解しているが、署名されたトピックは理解していないと仮定します-いいえ。

物理学に関する記事にしましょう。オーディエンスを分析したところ、サイトのオーディエンスの3%が「物理」セクションに登録していることがわかりました。このセクションの購読者がそこから記事を入力する可能性は80%であることがわかりました。また、一般的なフィードから記事にアクセスする確率は5%であることがわかりました。



潜在的な読者はだれですか。「物理学」セクションに登録していない人のために記事を「最適化」する必要がありますか?言い換えれば、物理学に精通した人が私たちの記事を読む可能性はどのくらいですか?



したがって、注意、この確率は...約33%です。



読者の3分の2以上が物理学を理解していないため、これを考慮する必要があります。



どうして起こったの?要するに、物理学に精通している人が記事を訪れる可能性が高いことは、その少数によって補われます。共通のフィードから記事にアクセスするわずかな機会が、評価で重要な役割を果たし始めます。これについてもっと知りたいですか?ここにベイズの定理ruenに関する良い記事へのリンクがあります。

確認したい場合:



数学の時間:
3% , 80% . — 0.03*0.8 = 0.024 = 2.4%.



, - = . «» , . , = 0.05*0.03*0.2 = 0.0003, 0.03%.



5% , 4.97%



. (2.4% + 0.03%) .

(2.4+0.03)/(2.4+4.97+0.03) = 0.328.

: ~33%



アクションとそれを実行する人について話しました。最後の質問に移る時間です。

「オブジェクト」という言葉をよく使用しましたが、それについての情報は提供しません。多くのエンティティに適用できるように十分に抽象的であり、作業できるように十分な情報が必要です。



使用するオブジェクトの記述方法は?



1.5モデリングの体系化



簡単に
.



— , .



— , ( ).



私はテキスト、表、図などを一般的に説明しようとすることにしました。しかし、それを行う方法は?



一歩後退して、彼らの「創造」がどのように起こるかを見てみましょう。多分これは私たちを助けるでしょう。



テキストを書きます。あるアイデアがあり、それを言葉で定式化し、書き留めます。さらに、アイデアは他の言葉の形だけではありません。写真、音楽、数学的なオブジェクトを記述することができます。



コードを書いています。コードに変換する要件があります。これらは口頭で表現することも、イメージ(インターフェースのスケッチなど)を表すこともできます。

図を作成します。このスキームで説明するオブジェクト間の関係があります。



これらのプロセスには共通点があります。何らかのシステムがあります。必ずしも同じ「用語」を使用しているわけではありませんが、別のシステムに変換します。



「モデリング」という言葉は、このプロセスを説明するのに適しているように思えます。



したがって、モデルとは、指定された表記(用語)を使用して別のシステムを記述するシステムです。



この定義は合理的な質問につながります:



システムとは何ですか?



システムは、いくつかのコンポーネントの組み合わせです。可能な状態と現在の状態のセットによって定義されます。システムコンポーネント私はしばしばオブジェクトを呼び出します。

これらは、要素(事前定義されたもの)およびこれらの要素で構成される他のシステムになります。接続のようなものがまだあります-それらは、他のオブジェクトに応じて1つのオブジェクトの可能な状態を制限または決定したいときに現れます。



例:

2枚のコインのシステムがあります。それらの1つは「ワシ」状態にあり、もう1つは「尾」状態にあります。

イーグルと尾は私たちのシステムの要素です。



コインは、「ヘッド」と「テール」の要素で構成されるサブシステムであり、これらの状態のいずれかになります。最初のコインの場合:



画像



コインを裏返すことができず、システムに変更を加えることができないとします。この場合、システムは次のように記述できます:



画像



コインを投げることができる場合、システムは次のように記述されます:



画像



いくつかのシステム間に依存関係があります。 2番目のコインの状態を最初のコインの状態と等しくすることはできません。



コイン2の可能な状態のセットは、制限を考慮して、コイン1が配置されている状態を除く、以前のすべての可能な状態です。



画像



この場合、コイン2の状態がコイン1の状態を決定すると言うことができます。



ここで、「エッジ」を追加してコインの可能な状態のセットを変更するとどうなるか見てみましょう。



コイン1と2の状態のすべてのペアを作成できます。



画像



この場合、コイン2の可能な状態を制限することについて話します。



更新:



Javaでのコインのサンプルの実装を作成しました。これがリポジトリですさらに、基本アクションのためにコイントスを行う場合の複雑さの計算方法も示します。



数学の時間:
S — .

E(S) — .

V — .

e — .

: S=e=E(S)={E(S1),E(S2),E(Sn)},SkS

もし Sk — , , .. .

: S=(V,e),V={E1(S)En(S)},eV

.



, , , .



:

{SjSk} Si

X=V(Sj)...V(Sk)x=(En(Sj),,Em(Sk))

Y=V(Si),y=Et(Si)

a=(x,y)XY

x yx

x y , .



PS

, , (0 1, ), , — . , . .



( ru ) ( ru ) . «» , .



モデルに戻る



モデルを最初のマッピングである別のシステムと呼びます。 一般に、他の要素から構築できます。 システムのモデルは地図であり、システム自体は領域enです。 誰も他のモデルのモデルを作成する必要はありません。 マップen )のマップを描くことができます。



モデルを構築してみましょう。



古典から始めましょう:ブラックボックス。

あなたが持っている:「入力」、「出力」とボックス。 結果を「入力」として取得するために変更するコンポーネント、結果を「出力」として表示するコンポーネント、および残りをブラックボックスとして指定します。 そのようなモデルは、システムの内部依存関係を記述しませんが、それらを隠します。 結果がどのように得られるかはわかりません。



画像



このアプローチは、システムの動作を調査する場合によく使用されますが、同時に「開く」ことはできません。 たとえば、心理学。 私たちは人々にテストを与え、彼らはそれを解決します。 現時点では、人々の頭の中で何が起こっているのかわかりません。 ただし、十分なデータを収集したら、デバイスボックスについて説明できます。これにより、同様の結果が得られます。 Machine Ex Homoパートでは、これをさらに詳しく見ていきます。



次に、コンポーネントのセット全体とその可能な状態を表示するモデルを作成します。



あなたは古代ギリシャに住んでいます。 あなたの隣人のゼノru )はすでにあなたをつかまえました。 このエイドフの息子は、毎晩別の脳を破壊するミステリーruであなたの家に侵入し、その後、あなたは眠れない夜を考えて過ごします。 あなたは眠る必要があり、そのためには少なくとも数日間彼を黙らせる必要があります。



彼が最後に亀を追いかけているアキレスの物語に頼った時。 この夜、バケツの1つに目が落ちました。 興味深い考えが浮かびました 。バケツと石を使って、そのアポリアをより詳細に調べることです



亀の各ステップで、開始点に対するアキレスと亀の位置を見つけられるようにします。 歩き回るカメ、アキレス、カメの10倍の速さです。 そして、それらの初期位置:1000ステップと0ステップ。



私たちのモデルはまだ数字の表現方法を知りません。 そしてその上で、アキレスがどこにいるのか、カメがどこにいるのか、道がどこにあるのかを区別することは絶対に不可能です。



自然数の表現は簡単です。バケツを取り、この数に等しい石の数を入れます。



これで、速度と経路を説明できます。 アキレスの速度を示すバケットには、10個の石があります。 カメの速度のためのバケツ-1石。 それでは、 「バケットオブザウェイ」に進みましょう。 私たちは亀に千の石を置き、アキレスを空のままにします。 亀が一歩を踏み出すと、石をスピードからパスにシフトします。 終わった?



まだです。 バケツに署名するペイントはありません。 石だけ。 これを処理する方法は?



または、タートルバケットを「速度」を「パスのバケット」の右側に配置することもできます。 アキレスのバケツでも同じことをします。 そして、カメのバケツを押し戻します。 これで、「2つのバケット」の組み合わせで、右側のバケットが高速で、左側が高速であることがわかりました。



2つのバケットの2つのグループを見ます。 アキレスのどのグループに行く必要があるかを調べるには、バケツを見て、その中の石を数え、アキレスの速度が10ステップであることを覚えて、バケツがアキレスに属していると結論付けてください。 そして、いくつかの変更を行い、アキレスの速度をカメの速度と等しくしたい場合はどうでしょうか? その後、アキレスのチェック方法は一般的に機能しなくなります!



したがって、速度と経路のバケツの前に、「名前のバケツ」を配置します。 今では一番右になっています。 ルールを次のようにします。名前のバケットが空の場合、それに続くバケットはカメです。 石があれば、このバケットのグループはアキレスを意味します。



画像

私はSで石を描いていませんでしたが、最初のステップではアキレスのバケツが空であり、亀には1000個の石が含まれていることは明らかだと思います。



あなたは喜んでいます。 今、ゼノンは、彼が石の分割のプロセスを永遠に続けることができると決めた理由について一生懸命に考えなければなりません。 少なくともあなたは本当にそう願っています。

残念ながら、これは睡眠の改善には役立ちませんでした。 ゼノは本当に次の夜に来ませんでしたが、今あなた自身は深く考えています。 石を分けることが不可能になるru瞬間が来るでしょうか?



見てください。各ステップで、検討している各オブジェクトのある種の状態を取得しました。 アキレスの位置は1つのバケツに対応し、カメは他のバケツに対応します。 速度については、状況は似ています。 このモデルは、シミュレートされたシステムのすべてのオブジェクトのすべての可能な状態を完全に記述します。



テキストもシステムのモデルです。 この場合の用語は単語です。 それらは意味によって、または意味のセットによって定義され、コンテキストによって制限されます。

私たちの感覚は、外部からの情報に基づいて脳が作成するモデルでもあります。



要するに、あなたは常にモデルに出くわします。



なぜ私たち全員がこれをしたのか覚えていますか? 念のため:モデルの定義を行い、その複雑さを計算しました。 時間が来ました。これをどのように適用できるかを見てみましょう。



あなたはUXデザイナーです。 あなたのタスク:アプリケーション設定ページを作成します。 あなたは、彼らが将来変化しないことを知っています。 全部で10個あります:5つのグラフィックと5つの通知設定。



すべてを1つの画面に残すことができます。 また、最初の画面で「スケジュール」および「通知」項目を作成し、5つの設定で対応する画面に切り替えることができるというアイデアも得ました。



画像



ユーザーのメモリが非常に乏しく、上から下へ読む習慣があると仮定しましょう。 しかし同時に、オプションをグループ化した場合、彼はセクションで間違いを犯さないほど賢いです。 彼は画面の名前を読まずに、メニュー項目に直接行きます。



設定は10個しかなく、リストで画面に表示することができ、ユーザーは目的のアイテムを単に突くだけです。 この場合、ユーザーはシートをスクロールする必要はないと考えています。 一方、ユーザーが最後から設定が必要な場合は、リスト全体を読む必要がないため、必要なポイントの半分をスキップできます。



どのモデルがより簡単な相互作用を提供しますか?



ユーザーがリストアイテムを使用して実行できるアクション:読み取りとそのアイテムへの突入。 インターフェイス言語に翻訳する場合:メニュー項目には読みやすさと読みやすさのプロパティがあります。 すべてのポイントは短いので、それらを読む難易度の違いは無視されます。 「突く」および「読む」アクションは、私たちの文脈では基本的であると想定しています。 複雑さは1です。



ユーザーがいずれかのアイテムを必要とする可能性が等しくなると予想されます。 それらを取り上げても意味がありません。



もちろん、あなたはすでに答えについてある種の予感を持っています。 書き留めておくとともに、答えが正しいという自信を書き留めておくことをお勧めします。 たとえば、1から10までのスケールでは、10は絶対に確実ですが、1はまったく確実ではありません。 結果と比較するために、このデータが必要になります。 ネタバレ「決定」の下で調査が行われます。 残念ながら、Habrはテキスト内のどこでも投票を行うことを許可していないため、リンクはGoogleフォームにつながります。 そこで、あなたはそれを調べて、全体的な結果に関する統計を見ることができます。



ペン、紙、電卓を開いて難易度を自分で計算することをお勧めします。 そして、その後だけ、スポイラーを開きます。



解決策:
ユーザーが2番目のアイテムを必要とした場合、アクションのアルゴリズムは次のようになります。

最初の段落を読む-> 2番目の段落を読む->指を突き、難易度をそれぞれ:2 + 1 = 3。

平均的な複雑さを見つけるには、各アイテムへのナビゲーションの複雑さを見つけて追加し、10で割る必要があります。

1つの画面上のアイテムの場合:((1 + 1)+(2 + 1)+(3 + 1)+(4 + 1)+(5 + 1)+(6 + 1)+(7 + 1)+( 8 + 1)+(9 + 1)+(10 + 1))/ 10 = 6.5

次に、サブメニューオプションの複雑さについて説明します。 目的のオプションを見つけるために、最初に目的のセクションを選択して、それを突く必要があります。 最初のアイテムの場合、アクションは次のようになります。

最初のセクションの名前を読む-> poke->最初の段落の名前を読む-> poke。

難しさ4。

正直に計算してみましょう:

((2 + 1 + 1)+(2 + 2 + 1)+(2 + 3 + 1)+(2 + 4 + 1)+(2 + 5 + 1)+(3 + 1 + 1)+( 3 + 2 + 1)+(3 + 3 + 1)+(3 + 4 + 1)+(3 + 5 + 1))/ 10 =(4 + 5 + 6 + 7 + 8 + 5 + 6 + 7 + 8 + 9)/ 10 = 6.5



それらは同じですか?!



...

...

...



正直なところ、この例を思いついたとき、私は別の答えを期待していました。 このタスクでグループ化する方法の方が優れているように思えました。



私が約束したように、あなたは調査に参加し、回答の統計を見ることができます。 また、複数の回答を送信できるという事実を使用しないでください。 回答して結果を見るのがより便利になるように、Googleアカウントに強制的にログインさせたくはありませんが、代わりに統計の収集に干渉しないようお願いします。



したがって、例を同じにしておき、ポイントの数を変えた場合はどうでしょうか? 4と4、3と3、6と6?



繰り返しますが、私はあなた自身でそれを行うことをお勧めします。 ヒント:点の総数に応じて、 算術級数合計について読み、方程式を作成します。



以下はその答えです。そのため、どうなったかを知りたい場合は、少し作業する必要があります。



答えは:
各セクションに5つのポイントがある場合、難易度は等しくなります。

6以上では、分割オプションが優先されます。

4以下の場合、1リストオプションが優先されます。





最終編集段階でこの例を記事に挿入しました。 私が話していたことを要約することは私にとって重要でした。 前の章の情報をわかりやすい方法でリンクします。 簡単に想像して、私たちが話したことを使ってみてください。



私は間違っていました。 この例を書いたとき、私は答えが何であるかを知っていると思いました。 そして今、私はかなり驚いています。 いいえ、そうではありません。 私がすべての計算を正直に実行したとき、結果は私に非常に大きな打撃を与えました。 私の頭の中で、次のようなことが起こりました。



-*一斉*私たちは誤解されていますか?!



そしてそれをまとめて......
-*音声1 *何? どうして! 私、あなたのお母さん、モバイルアプリケーション開発者! そして、同僚のレビューから判断すると、私は優れた開発者です! この問題に関する私の能力は、私に大きな疑問を引き起こしません!



-*音声2 *ええ、はい。 それで何?



-*音声1 *はい、これらのアプリケーションは昼夜を問わず表示されます。 たくさんのガイドラインを読みました。 これらのリストはすでに何百も作成しています。 私の分野では、デザイナーの間違いを修正するのに十分な資格があります!



-* Voice 2 *ええ、それから何?



-* Voice 1 *このクソ記事を書きました! 私の仕事のほとんどは、他の人が私の決定とやり取りしやすくすることです! 私は何年もこれをやっています! 勤務時間中だけでなく、ほとんどすべてが無料です。 私の経験は長い間平凡な1万時間を超えました!



-*声2 *男の子、私もあなたです。 あなたは新しいことを何も言わなかった、要点を得なさい。



-* Voice 1 *私の例は合成だと結論付けました。 それは現実を反映するものではなく、すべてが異なっているので、最初に提案した答えは正しいでしょう。 私の経験から、この例よりもはるかに多くのことを考慮することができました。



*サイレンと赤いランプが点灯します*



-*スピーカーからの声*思考の誤ったパターンを検出するために設定したあなたの意識のこの部分は話します。 気づいたエラー: 自信過剰効果確認バイアス選択的知覚当局へ訴えのパターンは認められましたが、この情報はまだ検証中です。 自己欺ofの危険があるため、より深く呼吸してお茶を飲むように命じられます。



-*音声1 *自己欺Noなし! 私が言ったことはすべて真実だと思いますよね!



-* Voice 2 *そして、あなたは現実とそれがどうあるべきかについてのあなたの意見の間に大きな違いがあることを知っています。



-*音声1 *さて、bliiiiiin、再びこれらの講義。



-*声2 *人々が飛ぶ方法を知っていると信じていると想像してください。 屋根から飛び降りるとき、それはあなたを救いますか?



-*音声1 *できません。 他の人は飛んでいないので、自分についてそんな馬鹿げた結論を出すことはしません。 そして一般的に、あなたは双曲線を描いています。



-*声2 *あなたはクレイジーです。 または、薬を飲んでいた。 または彼らはあなたにバーチャルリアリティの理想的なスーツを着せ、あなたはそれに5年間を費やし、そこにいたすべての人々が飛びました、あなたは自分で飛ぶ方法を知っていました、あなたの脳は適応し、それを行う方法を「知っています」 私たちの思考、感覚、期待、そして一般的に私たち全員が脳の状態です。 少なくともそれが作業仮説です。 そして、飛行の可能性に対する自信よりもはるかに奇妙な状況があることを知っています。 「彼の妻を帽子に取った男」という本を思い出してください。



-*音声1 *さて、脳は本当に失敗する可能性がありますが、あなたの例では、飛行中に自分が飛んでいると思っていても、本当に落ちます。 十分な時間があれば、間違った方向に飛んでいることに気づくでしょうが、手遅れになります。



-*音声2 *さて、今度は報告会に戻ります。 へえ、クールなしゃれ。 この例を思いついた。 あなたは彼のルールを知っていました。 あなたは現実と比較して、あなたがそれを大幅に簡素化することを知っていました。 あなたはそれを解決する方法を知っていました。 そして、あなたは最初の仮定で間違いを犯しました。



-*音声1 *それは私ではありません! 私は直感的に選択しました、あなたはそれがどのように機能するか知っています!



-* Voice 2 *そして、あなたはこれがしばしば正しく動作しないことを知っています。 そして、あなたのための別の証拠があります。



-* Voice 1 *そして最後の議論はどうですか? 結局のところ、これは実際には近似であり、実際にはすべてが異なります。



-* Voice 2 *この議論は真実です。 実際には、すべてが異なります。 あなただけが正しかったということはありません。



想像してみてください:あなたは現実に近い例を持ち出し始めています。 アクションの複雑さの「突く」と「読む」の関係を正直に考えて、人々が画面をどのように見るかを研究します。このリストの名前のどの部分が、これがポイントではないことを理解するのに十分です。

この例に膨大な数の条件を追加すると、数百倍も複雑になります。

申し訳ありませんが、この場合、「直感のため」という正しい答えが得られる確率は、ランダムに選択した場合の〜50%よりもはるかに低くなります。

現実があなたの味方になると確信していますか? なんで? それを証明してください。



-*音声1 *はい、わかりません! ただ...



-*音声2 *難しい。 あなたが間違っていたことを認めるのは難しいです、私は知っています。 しかし、あなたは私たちがそれを必要とする理由を理解しています。 この状況が発生したという事実は、私たちがブレーキであり、私たちが望むよりもゆっくりと学習することを示しているだけです。 しかし、私たちは何をすべきかを知っています。



-* Voice 1 * 単純な真実の再読み、または何?



-*音声2 *非常に良いオプション。 このような状況では常に安心できます。 深く呼吸することもできます。 そして、はい、私たちは1.5分以内にこの状況を理解しました。 エラー検出システムがどれほど迅速に機能するかを見ましたか? 私たちはパイに値すると思います。 彼は棚にはありません、 潜在的なバケツがありますが、私たちは自分で購入します。



-*声1 *そして、実際に何が起こるかは興味深いです...



-*音声2 *記事を書いている理由を忘れましたか?!



...

...

...



私はそのような膨大な余談と例を謝罪します。 おそらくあなたはこれ以上読む準備ができていないので、もう一度考え直したいと思うでしょう。 そしてこれは良い選択です。



最初に目次があります。記事をブックマークして、すぐにこの場所に戻ることができます。



続行することに決めましたか? 次に、私が提起したいものの最後のトピックがあります。



1.6ブレードランナー



簡単に
オッカムのカミソリと仮説の確率。



システムのシンプルさという点で、Occamのカミソリ。

変更の複雑さを示します Cand 方法までのシステムの複雑さ C そしてどのように C

k=CC/Cand

もし k 1以上は良い変化です。

もし k 1未満でも問題ありませんが、変化は見返りません。

もし k 0未満は非常に悪い変更です。



モデル内のオブジェクトの数とともに複雑さが増し、すでに特定のモデルセットがあると仮定した場合、最良のオプションはオブジェクトの最小数を持つモデルであり、これはOccamのRazorの文言に非常に似ています。



OccamのRazorを知っている可能性が高いですが、念のため、思い出させていただきます。

「絶対に必要でない限り、新しいエンティティを引き付けるべきではありません。」



一般に、この原則は次のように解釈されます。すべての仮説の中で、最も可能性が高いのは、最短のサブルーチン(または、より単純に短いサブルーチン)によって記述されるものruen1en2です。



実際の生活の様子:

ライトをオンにしてライトが点灯した場合、仮説は次のようになります。



  1. スイッチが電気回路を閉じ、電流が電球を通過しました。
  2. スイッチが小さなノームを蹴り、ワイヤーが接続された結果、回路が閉じて電流が電球を通りました。
  3. スイッチは小さなノームを蹴り、小さなドラゴンが座っていたトロリーを押し、炎にrightえ、はんだを溶かし、ワイヤを接続し、その結果、回路が閉じて電流が電球を通りました。


これらの仮説のうち、gnomeのないエンティティが少ないものが望ましいです。 ただし、電球をオンにした場合、スイッチから静かな宣誓が聞こえます-スイッチが宣誓する理由は説明されておらず、後者には冗長エンティティが含まれているため、2番目の仮説が望ましいです。



私は正直になります。 OccamのRazorを初めて聞いたとき、仮説については考えませんでした。 そして、その曖昧な言葉遣いは、これが一般的な原則であるという考えに至りました-あなたのシステムにあるエンティティの数を減らすと、すべてがクールになります。



私は非常に間違っていました



しかし、システムの単純さについて説明したとき、この原則の誤った解釈を修正する方法に気付きました。 そして、それから何か役に立つものを作りましょう。



変更前と変更後のシステムがあります。



BeforeとAfterの複雑さの違いが、変更を行うプロセスの複雑さよりも大きい場合、この変更は正当化されます。変更は結果(少なくとも必要な部分)に影響しなかったことが理解されます。それを呼び出す...簡素化のための必要条件。



繰り返しますが



、変更後のシステム 予想される単純化は、変更自体の複雑さよりも大きくなければなりません。



の変更の複雑さを示す場合C および、システムの複雑さCおよびその後の方法C 我々が得ます:



C " - C > C

また、変化に対する効率の類似物を表現することもできます。

K = C ' - C / C

もし kが1より大きい場合は、必要な単純化条件に対​​応する適切なコーシャーの変更です。

もし kは 1より小さいが0より大きい-これは、システムを単純化するが、利益を得るよりも多くの労力を費やすことを意味します。

もし kが 0未満の場合、このような変更は実行する価値がないことがわかります。複雑です。



なぜ必要なのですか?たとえば、時間の限られた状況で行動し、必要な変更に優先順位を付けたいとします。大きな変化kを最初に考慮する必要があります。



例:



2つのテキストがありますが、1つにはテキストがありません。



一方では、テキストの量を増やして、それを複雑にしました。しかし一方で、これのおかげで、一部の読者は「Occam razor example」をグーグル検索しません。見積もりでこのような読者が多数いる場合は、例を紹介すると記事が簡単になります。



私たちも彼を説明するためにいくつかの行動をとったことを忘れてはなりません。あまりにも多くのアクションを費やし、単純化では十分ではなかった場合-エッセンスの導入は「報われません」。



うーん、これはすべてオッカムのカミソリとどのように関係していますか?



すでにいくつかのシステムがあると仮定しましょう。そして、それらの複雑さは、エンティティの数に直接依存します(実世界では、これはすでにわかっているように、必ずしも真実ではありません)。これらのシステムでのアクションの結果は私たちに合っています。



すでにシステムがあるので、C および0(システムに変更を加えるために何もする必要はありません)。最小数のエンティティを持つシステムを取り、計算します他のシステムと比較した kわかったkはマイナスの無限大に等しくなります。そのような状況で、単純さの観点から、最も少ないオブジェクトを含むシステムとは異なるシステムを選択することは、無限に愚かな解決策です。これは、すべてのシステムの中で、オブジェクトの数が最も少ないものを選択する必要があることを示しています。うんOccam's Razorに不審なほど似ています。



この条件を使用して他に何を説明できますか?

たとえば、さまざまなコード改善プラクティスを適用する価値がある場合と、無意味な場合を評価できます。



実際、大学でタスクを書いて、そのコードが一度読まれた場合(またはまったく読まないが、それがどのように機能するかを見るだけ)、それがよく読まれることを心配するべきではありません。



しかし、あなたがオープンソースプロジェクトのために書いており、何百人もの人々があなたのコードで作業する場合、またはあなたが開発する予定のあなたのプロジェクトを書く場合、あなたはその品質に注意する必要があります。



大要を書いている場合、将来必要になるかどうかを評価する必要があります。教師がその空き状況のみをチェックし、すべての情報がGoogleで見つけやすい場合、それを複雑にするのはなぜですか?



記事を書いている場合は、記事との相互作用をどのように見るかを決定します。たとえば、この記事は一度だけ読むことを意図したものではありません。クイック検索用に最適化しようとしました。そのため、各パートの下に「ブリーフフライ」スポイラーと目次があります。



ああ、人が私たちのモデルをどのように読むかをどうにかして説明し、このモデルの複雑さを読む方法を見つける方法があれば。私たちの行動がこのプロセスの複雑さにどのように影響するかを確実に言うことができ、私たちの理論を多数の実際的な問題に適用できます。



残念ながら、このためには、あらゆるモデルの人々を読み取るための一般的なアルゴリズムを作成する必要があります。これが非常に難しい作業であると思われる場合は、その通りです。



幸いなことに、私はすでにこの作業の一部を行っています。



Machine Ex Homoと呼ばれる次の章では、脳が情報をどのように扱うかを見ていきます。理解と、すでに知っている情報が新しいものの認識にどのように影響するかについて話します。人間の記憶を研究する分野での心理学者と神経生物学者の研究を見て、彼ら自身の記憶のモデルを作りましょう。その助けを借りて、単語の頻度の効果、エッジの効果、錯視など、いくつかの興味深い心理的効果を説明します。そして、さらに多くの写真があります。



要するに-それは面白いでしょう、私は約束します。



PS
.



, — . , , .



.



: , . , , - .



, , . .



, , . .

, , . , , .

, , simple.explanation.of.simple@gmail.com . , , . , , -, .



ライセンス:

CC BY-NC-SA 4.0



All Articles