動画の再生障害のお知らせ:動画の一部が再生できない事象が発生しています。多くの人は「プログラミングの基礎技術で、学ぶべきもの」という認識を持っていて、実際に書籍などで学習したことのある人も多いでしょう。一方で「実際にプログラミングを行う上では何に役立つかよくわからない」とも感じているのではないでしょうか?例えば、アルゴリズムの書籍では様々なソートアルゴリズムが紹介されていますが、一つ覚えてしまえば実用上困らないでしょうし、そもそも大抵の言語にソート関数は標準で用意されています。最短経路問題を解くことができるダイクストラ法は非常に有名なアルゴリズムですが、実際に自分のプログラムで使ったことがある人はほとんどいないのではないでしょうか?そういった、使いどころが見いだせない「アルゴリズム」を、具体的な問題に対して適用していく際の考え方を紹介しようというのが、この特別連載です。ここでは数あるアルゴリズムのうちで最も適用範囲の高いものの一つ、「幅優先探索」にフォーカスを当てて、どれだけ広い範囲の問題に対して役立つのかを見ていきます。今回は幅優先探索の基本について解説します。例題1200円持ってコンビニに行きました。コンビニには、30円、55円、66円、112円、128円、162円の6種類のお菓子があります。2種類のお菓子を、合計金額ができるだけ高くなるように買いたいとします。どんな組み合わせで買えばいいでしょうか(図1)。図1●200円以内でお菓子を二つ、できるだけ高い合計金額で買いたい!図2●お菓子を二つ買うときの合計金額この問題を手で解くとしたら、高い方のお菓子から順番に組み合わせて...、などとやるのでしょうが、コンピュータを使うのであれば非常に簡単です。しらみ潰しに、すべてのお菓子の組み合わせの合計金額を調べてしまえば良いのです。200円以下で合計金額が一番高くなる組み合わせが答えです(図2)。forループを二つ使えば、プログラムを組むのは非常に簡単だと思います。このようなアルゴリズムでは、調べられることは非常に限られます。同じ前提で3種類のお菓子を買う場合はどうでしょう。forループを三つ書けば良いと言えばそれまでかもしれませんが、個数が増えるたびにforループを増やすのは面倒です。問題を拡張してみましょう。現場の負担軽減を!医療界でのAWS活用法500万社が導入。情報銀行の成り立ち、事例、現状課題やその行方を網羅。経営戦略である以上、「会計」の知識やスキルが欠かせません。