東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

P≠NP? 問題

ここんとこ「さんすうのはなし」が続いてるのでついでに。

「ゲーデルの不完全定理」と共に計算機科学と密接に関わるのが「P≠NP? 問題」です。

計算して何かをもとめるのが計算機のお仕事のひとつなわけです。
計算には"簡単な計算"と"難しい計算"があります。

たとえばN個のデータが並んだ中から特定のデータを検索する。
これはアタマからケツまでだーーーーっと調べりゃいいから計算時間はNに比例します。

x == y であるx,y をN個のデータから探しだす。
N個のデータ中からふたっつ取り出す組み合わせを全部試せばいいんで
計算時間はN^2に比例しますな。

...ま、こんなスンポーで計算時間や必要メモリ量が"データ数のなんとか乗"に
比例する程度の計算は"簡単な計算"に属します。
# 'なんとか'がどんなに大きくても ^^;

一方データ数のなんとか乗では収まらない計算もたーくさんあるです。
"データ数の階乗" や "2のデータ数乗" に比例する時間がかかっちゃうとかね。
こっちに属するやつはデータ数が多くなると正面からはとても解けたもんじゃない、
一万年と二千年前から回してるうぅぅ(←ここで弾幕!)
八千年過ぎたあたりで諦めますふつー

簡単な計算─"データ数のなんとか乗"程度の問題を
データ数の多項式(Plynomial)のオーダーで求まることから P問題 と呼び、
そんなんじゃとてもじゃないが答えの出ない問題を NP問題 と呼んでます。

で、NP問題はホントにNP問題なんだろうか?
うまいアルゴリズムが思いつかないだけで、
ホントは多項式オーダーで求まる(=P問題)んじゃなかろーか?

計算機屋さんたちは手に負えないNP問題を解きたくて仕方がない。
面白いことにNPに属する問題のどれかひとつでいいから多項式オーダー
で解くことができれば、他のすべてのNP問題も多項式オーダーで解けるって
ことが証明されています。けども未だかつてNP問題を多項式オーダーで
解けたためしがありません。"原理的に解けないんじゃないのかぁ?"ってわけ。

"原理的に解けない"ことが証明されればあきらめがつく(=肩の荷がおりる)わけだし、
その反例が一個見つかったんならすべてのNP問題が多項式オーダーで解けるんだからみんな大喜び♪

P≠NP? 未だ解けぬ難問です。

投稿日時 : 2007年10月23日 11:01

コメントを追加

# re: P≠NP? 問題 2007/10/23 11:14 シャノン

今仕事で作ってるシステム、最適解を出すにはナップサック問題に挑まなければならないようです。

…やってらんないので及第点で逃げてます。

# re: P≠NP? 問題 2007/10/23 11:19 IIJIMAS

P≠NPを示しても、P=NPを示しても100万ドルですね♪
http://www.claymath.org/millennium/P_vs_NP/

# re: P≠NP? 問題 2007/10/23 11:39 凪瀬

P=NPで解決されていますよwww
http://www.amazon.co.jp/dp/4899811241/

# re: P≠NP? 問題 2007/10/23 11:44 シャノン

高ぇww

# re: P≠NP? 問題 2007/10/23 11:47 επιστημη

トンデモ?

# re: P≠NP? 問題 2007/10/23 12:52 凪瀬

つか、自費出版の書籍をamazonで扱ってるんだなw
トの付くほうと言われていますが、ちょっと中身を見て見たいですね。

# re: P≠NP? 問題 2007/10/23 13:58 IIJIMAS

その著者
http://www.amazon.co.jp/dp/4622039540/
の翻訳にも名前がありますが、同じ人なのですか?

#今度は、凪瀬さんに教えてもらったとおりに、amazonへのURL短くして貼りました…

# re: P≠NP? 問題 2007/10/23 14:38 凪瀬

同じ人っぽいですね。
翻訳だと原文があるからトンデモにはならないとは思うけど。
ぐぐるとわかりますが、はっちゃけた発言が多い人です。
http://www.int2.info/news1.htm

基本的に、頭がいい人というのは間違いないのだろうけど…

# re: P≠NP? 問題 2007/10/24 9:18 まつあに

επιの数学の話、おもしいです。
数学の本かいたら?

結城さんの数学本も面白かったけど、επιさん流にもうちっとコード満載な奴。こないだのニュートン法の記事みたいな。

# re: P≠NP? 問題 2007/10/24 9:58 επιστημη

"うごくさんすうのほん"ですかー
ネタがねぇっすー orz

...せっかくだからシャノンさんの出してくれた「ナップサック問題」を解説しよう。

N個の荷物がありそれぞれの重さをw[0]...w[N-1]とします。
その中からテケトーにいくつか選んでW[kg]の荷物が入るナップサックに"きっちり"詰め込みたい。
選んだ荷物の総重量 = ナップサックの容量 てことね。
この条件を満たす荷物を選び出すのが「ナップサック問題」。

荷物の選び方の総数は0番を入れるか否か/1番を入れるか否か...なのでN桁二進数の取りうる値の範囲と同じく 2^N です。
ナップサック問題の解法はいろいろ工夫しても2^N通りの組み合わせの総当たりと同程度の時間を要します今んとこ。

上記条件を満たす荷物の選び方は一通りしかないように荷物の重さとナップサックの容量を決めておけば、
ナップサックに入れた荷物は1,入れなかった荷物を0で表わすと二進数が出来上がります。

さらに、"とある条件"を設定しておくと、その条件を知っているヒトであればナップサック問題をいとも簡単に解くことができます。

ってーことは、ナップサック問題は("とある条件"を鍵とした)暗号アルゴリズムとして使えるわけっすねー

...と、やまださんに引導渡してみるテスト。

# re: P≠NP? 問題 2007/10/24 10:59 まつあに

なるほどねー。僕みたいなアホでも雰囲気はわかります。

wikipediaのP≠NP?の解説を読んでみたんですが、
万が一、P=NP が証明されるとすべての(?)暗号が
意味を成さなくなるわけね。おそろし。
てか、世の中P≠NPって事を仮定して突き進んでるのね。
5へぇ。

# re: P≠NP? 問題 2007/10/24 11:48 επιστημη

そゆことそゆこと。
NP問題のどれかいっこでもP時間で解かれちゃうと、
解読に300年かかるとタカくくってたのが3分になっちまうかもです。

タイトル
名前
URL
コメント