重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

3つのロボット(Robot: R1, R2, R3)が有する機能(Function: F1, F2, F3)の有無を調べたいと考えています。
(1)元データのファイルが3つ(R1, R2, R3)あります。
(2)(1)の3ファイルを対比較して得た(同じ機能を意味する異なる単語を対応づけた)データのファイルが3つ(R1vsR2, R2vsR3, R1vsR3)あります。
(3)(2)の3ファイルを元に、ロボット(R1, R2, R3)の機能(F1, F2, F3)の有無(1, 0)を示した表を、最終的に得たいのです。

質問:Perlを用いて、(2)の対比較データを(3)の表データに変換にはどうすればよろしいでしょうか?

(1)元データ
R1,watch,hear,speak

R2,look,listen

R3,kiku,hanasu

(2)対比較して得たデータ
R1,R2
watch,look
hear,listen

R2,R3
listen,kiku

R1,R3
hear,kiku
speak,hanasu

(3)最終的に得たい表データ
RF,F1,F2,F3
R1, 1, 1, 1
R2, 1, 1, 0
R3, 0, 1, 1

または、(機能F1,F2,F3をそれぞれ単語watch,hear,speakで代表させて)

RF,watch,hear,speak
R1, 1, 1, 1
R2, 1, 1, 0
R3, 0, 1, 1

(補足)
以下の機能一覧の情報は未知とします。
見る F1: watch,look,miru
聞く F2: hear,listen,kiku
話す F3: speak,talk,hanasu

A 回答 (1件)

要するに, (2) のファイルから「それぞれの機能を表す単語」がわかればいい (もしくは, 個々の単語がどの機能に対応するかがわかればいい) ってことですね. グラフ理論の言葉を使えば簡単に書けるけどなぁ.


各単語を「頂点」とし, 同じ機能を表す単語同士を「辺」でむすんだグラフを考えます. これは (2) のファイルから作ることができます. このグラフ上の連結成分は「機能」を表すことになるので, R1~R3 のもつ「単語」から「機能」に変換すればいいということになります.
がんばってハッシュなんかを作れば, それほど難しくないような気がします.

この回答への補足

ありがとうございます。この問題を解くのに有用な参考文献(類似の問題が解説されている、サンプルスクリプトが掲載されている、ウェブサイトや参考書)をご存知でしたらご教授ください。

補足日時:2007/09/05 16:22
    • good
    • 0
この回答へのお礼

ありがとうございました。このような作業(グラフ等)を行ってくれる、Perlスクリプトのサンプル、またはフリーのソフト(R等)をご存知でしょうか?

お礼日時:2007/10/03 04:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!