seegongsik
アルゴリズム

わかりやすく 問題 分割 考え方

前に、アルゴリズムは「問題を解くための決まった手順」だと話しました。でも大きな問題を前にすると、その手順がなかなか思い浮かびません。秘訣は一つです。一口に入らなければ、同じ形の小さなかけらに分けるのです。

01

一口に入らない

部屋をまるごと片づけなさいと言われると、途方に暮れます。
どこから手をつければいいのか、順番が思い浮かびません。
大きな問題はもともとそういうもので、一つのかたまりとして見ると、大きすぎて一口に入らないのです。

一つのかたまりで途方に暮れます。押すと分かれます
一口に入らない大きな問題は、同じ形の小さなかけらに分けます。

大きな問題のかたまりを押すと、小さなかけらに分かれます。部屋を片づける → 机 · ベッド · 床 · 本棚。

部屋をまるごと見ると途方に暮れたのに、机、ベッド、床、本棚に分けると、急にできそうに見えてきます。
大きな問題を解く第一歩は、まさにこれ、小さく分けることです。

02

同じ形の、もっと小さな問題

分けたかけらをよく見ると、おもしろいことがあります。
かけらも結局は「片づけ」なのです。部屋を片づける仕事が、机を片づける仕事に小さくなっただけです。
かけらは、もとの問題と同じ形の、もっと小さな問題です。

かけらを押すと中が見えます
中も結局、同じ形の「片づけ」です。もっと小さくなっただけです
かけらは、もとの問題と同じ形の、もっと小さな問題です。だから同じやり方で解けます。

かけらを一つ押すと、中が見えます。その中も結局、同じ形のもっと小さな問題です。机の片づけも = 片づけ。

これがよいのは、大きな問題を解く方法さえわかれば、小さなかけらも同じ方法で解けるからです。
新しい方法を学ぶ必要はありません。
同じ形なので、使っていた方法をそのまま小さく使えばよいのです。

03

かけらに順番をつける

分けるだけで終わりではありません。かけらにも順番があります。
床に物が散らばっているのに床から掃くと、上から落ちてきたものでまた散らかります。
机とベッドの上を先に片づけ、最後に床を掃くのが正しい順番です。

処理する順番にかけらを押して
分けたあとは順番が大事です。床は最後に掃けば散らかりません。

かけらを処理する順番どおりに押します。上(机・ベッド・本棚)を先に、床を最後にすれば正解です。

順番を正しく決めると、かけらどうしがぶつかりません。
前のかけらが散らかしたものを、後のかけらがまた片づけることもなくなります。
第1回で見たとおり、同じかけらでも順番が違えば結果が違うのです。

04

かけらの答えを合わせる

かけらを一つずつ全部解いて、机もベッドも床もきれいになりました。
でも、かけらを解いただけで、部屋はまだ終わっていないのでは?
そうではありません。かけらが全部解ければ、それが集まって部屋がきれいになったのです。

といた かけらを おして 合わせる
あつまった かけら (0/4)
かけらの こたえが ぜんぶ あつまれば、それが 大きな もんだいの こたえ。合わせることも ひと だんかいです。

解いたかけらを順に押すと、一つに合わさります。かけらの答えが全部そろえば、それが大きな問題の答え、つまりきれいな部屋です。

つまり、合わせることもひとりでにできるわけではありません。
かけらの答えを集めて一つにつなぐのも、れっきとした一つの段階です。
分けて、順番どおりに解いて、合わせる。これが全部そろって、はじめて大きな問題が本当に解けます。

05

まとめ:分ける、同じ形、順番、合わせる

大きな問題を前に途方に暮れたら、この四つの拍子を思い出してください。
一つ目、同じ形の小さなかけらに分ける。二つ目、かけらも同じ問題だと知る。
三つ目、正しい順番を決める。四つ目、かけらの答えを合わせる。
これがコンピューティング的な考え方の出発点です。

四つの拍子を順に押して
分けて - 同じ形 - 順番 - 合わせる。これがコンピューティング的な考え方の出発点です
大きな問題にはこの四つの拍子。小さく分ければ、どんな問題も手に負えるようになります。

四つの拍子を順に押すと、要点がまとまります。分ける → 同じ形 → 順番 → 合わせる。大きな問題を扱うための一枚の図です。

これで、どんな大きな問題に出会ってもこわがる必要はありません。一口に入らなければ、分ければよいのですから。
ただ、かけらがいくつもあるなら、どれを先にするか、その順番がとても大切になります。
次のレッスンでは、その並べ方、つまり並べ替えを扱います。

一言でいうと大きな問題は一口では解けません。だから同じ形の小さな問題に分け、どの順番で解くかを決め、かけらの答えをまた合わせます。こうして「分ける - 順番 - 合わせる」で大きな問題を扱うことがコンピューティング的な考え方の出発点で、どんなに難しい問題も、小さく分ければ手に負えるようになります。
← アルゴリズム
このページがお役に立ったなら支援する