裏の糸
——NP困難の話、飲み会幹事の店選びに縫い込まれて

エッセイ「飲み会幹事の店選び」の背後には、計算理論の古典的なクラス分類が置かれている。7つの制約を同時に満たす店をネットで探したタケウチが、3時間でも見つけられなかった理由は、彼の検索能力ではなく、問題そのものの性質にある。それをNP困難(NP-hard)と呼ぶ。

一本目——NP困難とは何か

計算機科学で扱う問題は、その解法の効率性によっていくつかのクラスに分類される。Pクラスは、入力サイズの多項式時間で解ける問題(例:ソート、二分探索)。NPクラスは、解が与えられたら多項式時間で検証できる問題(例:SAT充足可能性、ナップサック、巡回セールスマン)。そしてNP困難は、NPの中で「最も難しい」一群、もしくはそれと同等以上に難しい問題のクラスである。

NP困難な問題の特徴は、制約が増えると探索空間が指数関数的に爆発することである。店選びはまさにこれに該当する。各制約は独立に変動し、組み合わせは制約数の指数で増える。10制約あれば理論的な候補空間は $2^{10}=1024$ パターンを超える。店舗データベースを全数走査しても、すべての制約を満たす店が存在する保証はない。

二本目——物語のどこに現れているか

タケウチが立てた条件は7つだった。予算3,500円以内、駅徒歩5分以内、座敷あり、ベジタリアン対応、誰々の元カノが働いていない、土曜17時開店、団体予約OK。一見、普通の幹事の条件である。

しかし、これら7つは独立した制約として乗算的に効く。予算と駅近を満たす店は東京都心で数千件あるが、座敷ありに絞ると数百件、ベジ対応で数十件、土曜17時開店で十数件、団体OKで数件、そして「元カノが働いていない」という個別事情依存の制約が最後に残り、ほぼゼロになる。

タケウチが3時間で諦めたのは怠惰ではなく、問題の性質に対する正しい反応だった。計算理論で言えば、彼は近似アルゴリズム(妥協解)と貪欲法(一番厳しい制約から決める)に自然に移行している。

三本目——NP困難な問題と日常

NP困難な問題は、計算機の能力が向上しても本質的には解決しない。それゆえ実生活では、完璧な解を諦めて、いくつかの妥協戦略が取られる:

タケウチが最後に選んだ「妥協を重ねた店」が当日は意外と盛り上がった、というのは近似アルゴリズムの実用性をよく示している。最適解でなくとも、十分に良い解で済むことがほとんどである。

補記——シリーズ「裏の糸」の中での位置

シリーズ「裏の糸」は、専門家には当たり前の概念を、暮らしの言葉で語り直す試み。既存3作:ワタナベの妻×植木鉢(用語なし版)マーク×芝刈り(用語あり版)ワタナベ×実家(テセウスの船)。本作はそれらに続く五本のうちの一本である。

← 本文(第一稿)
辛口レビュー
第二稿
← シリーズ目次に戻る

このページの解説文は編集部スクリプトで定型生成されています。シリーズ「裏の糸」の続編バッチの一本。