プログラミングでできないこと

Junya NORIMATSU

前回はプログラミングで何ができるのかについてお話しました。
今回はその逆で、プログラミングでできないことについてお話したいと思います。

ひとくくりに「できないこと」、といっても何通りか種類があるので、 今回は長ーい時間がかかる系の「できない」にフォーカスしたいと思います。

みなさんパソコンを使っていて「すごい待たされるなー」とか思ったことはありませんか? たとえばOSのアップデートとか…たまに一晩とかかかりますよね。

でも今回お話する「長い時間」というのはその比ではありません。
宇宙ができたタイミングで計算をスタートしてもいまだに終わらないかも…というレベルの「長い時間」です。

この類の問題で一番よく知られている問題といえば「巡回セールスマン問題」です。
こういう問題です。

「あるセールスマンが、コンビニに営業をかけに行くことになりました。コンビニの数はとてもたくさんあるので、
  • リストアップしたすべてのコンビニを1度ずつ訪問しながら
  • でも最短距離で回りたい
と考えました。そのためにはどの順番でコンビニを巡ればよいでしょうか?」

あの順番・この順番…とあれこれ試しながら探していくわけですが、今のところ、これを確実に短時間で解ける方法というのはまだ見つかっていません。
存在するかしないかもはっきりしないので、もしかしたら一発逆転があるかもしれないのですが、多くの研究者は悲観的です。
念のためですが、お店の数が少なければ解けます。
Wikipediaを観ると、「20以上になると現実的でない」と書かれていますね。
世界中のコンビニ全部とかになると宇宙が終わる方が早いかもしれません。

さて、「こんな問題、どこで使うの?」と思われた方もいらっしゃるかもしれません。
実は、うっかりこの形になってしまう事がよくあります。
たとえば機械翻訳(英語を日本語に訳すような)も、初期のころの翻訳方法はこれと同じ問題をはらんでいたと指摘されています。(Knight, 1999)

ものすごい大ざっぱな説明を試みてみましょう。 何語でも良いんですが、今回は英日翻訳を考えます。
当時の翻訳は大きく分けて2ステップからなっていました。

  1. 入力された英単語について、対応する日本語の単語を列挙します。
  2. その日本語の単語を1つずつ使いながら正しい順番に並べます。

ここでいう、日本語単語が巡回セールスマン問題でいう「コンビニ」、単語の順番が「コンビニを巡る順番」です。
さらに、出力される日本語文が元の英文の翻訳になっている確率というのを考えるのですが、これが巡回セールスマン問題の「距離」に対応します。
「できるだけ良い翻訳を探そう」という動機でがむしゃらに翻訳文を生成しようとすると、すごい時間がかかってしまうということになります。
実際にはそれでは使い物にならないので、適当な計算でごまかして早く結果を求める工夫をしていました。

コンピュータでできること・できないことについてのお話はいかがでしたか?
できないことの話はちょっと後ろ向きでしたね。
でもこういった問題を何とか解こうとしている研究者も沢山います。
「ちょっと速くなった」というニュースが流れたらその裏では研究者の涙ぐましい努力があることでしょう。

【参考文献】

巡回セールスマン問題

Kevin Knight. 1999. Decoding complexity in word-replacement translation models. Comput. Linguist. 25, 4 (December 1999), 607-615.

【宣伝】

Cafetalk開講記念クーポンを用意してます。興味を持っていただいた方はのぞいてみてくださいね。

============================
クーポン名: Cafetalk開講記念クーポン!
コード: 0dd52b94
割引率: 20%
適用レッスン: あなたもきっと作れる!プログラミング入門〜初級 (Python)
対象受講期間: 2018年4月3日 ~ 2018年4月30日
クーポンのURL: http://cafetalk.com/coupons/detail/?id=681238&lang=ja
(GMT+09:00 Tokyo) 
============================

專欄文章僅代表作者個人觀點,不代表咖啡滔客的立場。

回應 (0)

登入之後,添加評論 登入 »
Premium ribbon

來自:

住在:

授課種類

講師會的語言

日語   母語程度
英語   日常會話程度
韓語   只能說一點

講師專欄排行榜

  • 程式開發

    明日使えないプログラミングの雑学(Pythonコード付き)

    こんにちは。最近暑いですね。 私が住んでいる関東地方は先日梅雨入りしまして、このコラムを書いている当日は真夏日とかニュースになっていました。 さて、本日はプログラミングの雑学です。 実用性はほぼあ...

    Junya NORIMATSU

    Junya NORIMATSU

    0
    7802
    2018年 6月 10日
  • 電腦影像處理

    Pythonでお絵書き

    こんにちは。ついにゴールデンウィークですね。私もゴールデンウィークに浮かれてPythonでお絵書きしてみました。こちらに貼り付けた絵は、マンデルブロ集合という有名な幾何学模様です。もともと数学のお話...

    Junya NORIMATSU

    Junya NORIMATSU

    0
    7724
    2018年 4月 28日
  • Python問題集を作り直しました

    こんにちは。年末くらいから黙々と作っていた問題集がようやく完成しました。昨年夏くらいに軽く作っていたものの反省に基づき一から作り直しました。教科書にしている本はわりと分かりやすいと思うのですが、練習...

    Junya NORIMATSU

    Junya NORIMATSU

    0
    7062
    2019年 1月 19日
  • 程式開發

    あけましておめでとうございますと今年の計画

    こんにちは。明けましておめでとうございます。お正月休みも終わり、会社や学校がはじまって慌ただしくなりつつありますね。まず、お知らせの方にも書きましたが新しいクーポンを作りましたのでぜひご利用ください...

    Junya NORIMATSU

    Junya NORIMATSU

    0
    6805
    2019年 1月 8日
« 返回講師專欄的一覽表

線上客服諮詢