• ベストアンサー

アルゴリズムの問題教えてください。

アルゴリズムの勉強をしています。 とりあえず2分探索、ソート各種、 リスト、ハッシュ、2分木AVL木は実装できました。 ほかに定番のアルゴリズムってありますか。 (正規表現は難しすぎて挫折しました。)

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

後は応用といえるかも知れませんが、 スタック、キュー、逆ポーランド記法、文字列操作、文字列圧縮、文字列検索、文字列置換、ヒープソートなど。

nagata20000
質問者

お礼

回答ありがとうございます。 文字列操作は面白そうですね。

その他の回答 (4)

  • ejty110
  • ベストアンサー率15% (4/26)
回答No.5

ゲームみたいに取り組めるものとして、 巡回セールスマン問題、ハノイの塔、 宣教師と人喰い人種の問題などが面白いかと思います。 NO.3の方が書かれてるようにグラフ理論が実用的で 実装してみるとよいと思います。

  • sysfun
  • ベストアンサー率6% (1/16)
回答No.4

私も今アルゴリズムを勉強しています。 下記URLの本を昨日購入して読んでますが、 収録されたアルゴリズムの数がハンパじゃありません。 発刊は1991年と古いのですが増刷を繰り返しているようです。 購入した本の書籍情報を見ますと「平成17年7月1日 第25刷」とあります。 Amazonのレビューも見ての通り評価が高いようです。 私も読み始めたばかりですが、とてもおすすめです。 私が今直面している問題は、「エイトクィーン」です。

参考URL:
http://www.amazon.co.jp/exec/obidos/ASIN/4874084141/qid=1128661648/sr=1-2/ref=sr_1_10_2/249-3148723-4114752
nagata20000
質問者

お礼

回答ありがとうございます。 本屋へいって探してみます。

  • goma_2000
  • ベストアンサー率48% (62/129)
回答No.3

No.2さんの仰られているように、グラフ・ネットワーク関係は面白いですよ。最小全域木や最短経路問題(Dijkstra法など)から、動的計画法などもあります。 また、これらの問題からディープな「組み合わせ最適化問題」の道に足を踏み入れるのもよいかもしれません。組み合わせ最適化問題はNP Hardですが、Huristicに解くアルゴリズムが研究されています。代表的なアルゴリズムとしては、SAやGA、Neural NetworkやTabu Searchなどもあります。 ちょっと古い本ですが、 「モダンヒューリスティックス 組み合わせ最適化問題の先端手法」 Colin.R.Reeves編 日刊工業新聞社 を紹介しておきます。

nagata20000
質問者

お礼

組み合わせ最適化問題ですか。 もう少し腕が上がったらやってみます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

グラフ(点と点を結んだものを扱う諸々) 行列計算、3D計算、3D→2D変換 多倍長計算

nagata20000
質問者

お礼

回答ありがとうございます。 どれも面白そうな題材ですね。 迷ってしまいます。

関連するQ&A

  • 定番アルゴリズムのメリット・デメリットについて

    定番アルゴリズムとして以下のアルゴリズムが挙げられますが、 (1)ユークリッドの互徐法 (2)エラトステネスのふるい (3)線型探索 (4)二分探索 (5)ハッシュ探索 (6)バブル・ソート (7)クイック・ソート ↑これらの各々のアルゴリズムのメリット・デメリットについてをそれぞれ教えてください。 よろしくお願いします。

  • 探索・整列アルゴリズムのメリット・デメリットについ

    「コンピューターはなぜ動くのか?」の第5章の「アルゴリズムと仲良くなる7つのポイント」のところにて、主な定番アルゴリズムとして、 表5.1 主な定番アルゴリズム (1)ユーグリットの互除去 (2)エラトステネスのふるい (3)線型探索 (4)2分探索 (5)ハッシュ法 (6)バブル・ソート (7)クイック・ソート 上記のアルゴリズムがあり、そのアルゴリズムの用途には (1)最大公約数のアルゴリズム (2)素数のアルゴリズム (3)データ探索のアルゴリズム (4)整列のアルゴリズム 上記のアルゴリズムがありますが、(3)~(4)のアルゴリズムの用途においてのメリット・デメリット ・データ探索のアルゴリズム (3)線型探索 (4)2分探索 (5)ハッシュ法 についてのメリット・デメリット ・整列のアルゴリズム (6)バブル・ソート (7)クイック・ソート についてのメリット・デメリット これらを教えて頂けばと思っております。 よろしくお願いたします。

  • アルゴリズム系の問題知りませんか?

    再来週大学院試験を控えている者です。 入試の項目に「プログラミング(アルゴリズム)」と書いてあり、ある程度複雑なアルゴリズムを考えるような問題が出る事が予想されます。 きっと二分探索木やクイックソートのような問題が出るように思います。 アルゴリズムを考えるような問題としていい問題ご存じないでしょうか? アルゴリズムを考えるような問題としてはハノイの塔とかよいように思いますが ちょっと入試の問題としては出ないような気がします。 自分では他に線形リストやスタックなども勉強したんですが、 C,JAVA,Pascal,フォートランなどどの言語で回答してもよい事になっているので言語に限定した問題は出ないように思います。 90分で解く3問あるうちのプログラムは1つですから30分以内に解けるような問題のはずです。 (出題される可能性も考えていただければ幸いです)よい問題をご存知でしたら教えてください。 よろしくお願いします。

  • アルゴリズムでわからない問題があります。(C言語)

    問題1:探索アルゴリズムであるハッシュ法について正しいものを選べ。 (1)ハッシュ関数の出力によりデータを格納した配列の先頭から順番に調べる. (2) 入力データを,ハッシュ関数の出力により求めた格納場所に基づいて,あらかじめ木構造に格納しておく. (4) 入力データを格納した配列を繰り返し2つに分割し,それぞれを順番に調べていく. (3) 入力データから格納場所の位置に変換する関数(ハッシュ関数)の出力により,データの探索場所を決定する。 (5) 入力データを,ハッシュ関数の出力により求めた格納場所に基づいて,あらかじめヒープに格納しておく 問題2:探索アルゴリズムであるハッシュ法について正しくないものを選べ。 (1)入力データはハッシュ値で決められる場所に格納される. (2) ハッシュ関数には,異なる入力の値に対し異なる値を出力することが求められる. (3) ハッシュ関数の時間計算量は,入力データのサイズに比例する. (4) データの格納場所が大きい方が効率がよい. (5) 一般に2分探索法より高速に動作する. どなたかアルゴリズムに詳しい方回答お願いします

  • データ構造とアルゴリズムの問題が分かりません。

    データ構造とアルゴリズムの問題が分かりません。 以下の問題で悩んでいます。 索引は書籍中の単語が書籍の何ページ目に出現するかを表す。もちろん、索引に含まれるある単語が複数のページに出現する場合や、索引に含まれる複数の単語が同一のページに出現する場合もある。 この索引で対象とする単語は、その書籍の中で重要な意味をもつものとして、また、特定の単語はたかだか数ページにのみ出現すると仮定する。 (1)単方向リストを用いてこのようなデータ構造を実現する場合、C言語ではどのように宣言をすれば適切か、struct宣言を用いて示しなさい。 (2)単方向リストを用いてデータ構造の場合、特定の単語が何ページ目に現れるか探すにはどのようなアルゴリズムを適用すれば適切か、探索に必要な時間計算量とともに示しなさい。 (3)二分探索木を用いてこのようなデータ構造を実現する場合、C言語ではどのように宣言をすれば適切か、struct宣言を用いて示しなさい。 (4)二分探索木を用いたデータ構の場合、特定の単語が何ページ目に現れるか探すにはどのようなアルゴリズムを適用すれば適切か、探索に必要な時間計算量とともに示しなさい。 (5)二分探索木を用いたデータ構の場合、アルファベット順の索引を出力するたねには、どのような整列アルゴリズムを適用すれば適切か、整列に必要な時間計算量とともに示しなさい。 テストに類題を出すと先生はおっしゃってたので、どうしてもすぐに回答が必要です。先生にも質問したのですが、テストに類題を出すから教えられない。自力で頑張れと言われ困っています。 どなたか御助力よろしくお願いいたします。

  • 探索アルゴリズムの名称について

    以下の探索もしくは組み合わせのアルゴリズムに名称があるのかを教えていただければ幸いです. ある変数a1,a2,a3・・・,b1,b2,b3・・・があり(それぞれ小さい順にソートされている), このaとbにより影響する評価関数が最小となる最適な組を探索するアルゴリズムです. (1)まずa1・b1のペアを用いた時の値を算出する. (2)次にa2・b1のペアとa1・b2のペアでの値をそれぞれ算出し,小さい方を見つける. (今回はa1・b2のペアの方が小さかったとします.) (3)次にa2・b2のペアとa1・b3のペアでの値をそれぞれ算出し,小さい方を見つける. (2),(3)の様な処理を繰り返し行い,最小となるa・bの組を探索する. 以上の様なアルゴリズムなのですが,名称があるのかをお聞きしたいと思います. 言葉で書くとイメージしづらいですが,小学・中学ぐらいで勉強した最短経路問題のように 格子状の図を書くと分かりやすいと思います. 二方向のみをみて探索していきます. 個人的には,二分木探索に近いと思うのですがどうでしょうか? ただ,進み方によっては,同じ組み合わせを探索する事も出来るので, 完全な二分木探索ではないような気がします. 皆様のお力をお貸しいただければありがたいです. お願いいたします.

  • データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。

    データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。 データ構造とアルゴリズムについて学習しています。 (質問事項) ・データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。 詳細に教えて頂けると大変助かります。 (私の現状) たとえば、データ構造は、単純なものでは、配列やコレクション、2分木などの構造で、アルゴリズムは2分木探索の実装方法だと思っています。 データ構造とアルゴリズムについては初心者です。 (現在、就職活動中で、これらを学ぶ必要がありご質問させて頂いています) どうか、皆様、教えて頂いた情報を最大限に活用させていただきますので、(皆様にとってはくだらない質問かもしれませんが…)どうぞよろしくお願いいたします。

  • アルゴリズム(2分探索木)の問題について

    2分探索木のアルゴリズムに関する問題について質問させていただきます。 [問題] 集合Sに対する2文探索木とは、ラベルつきの2分木で、 その頂点vにはSのある要素l(v)がラベルとしてつけられている。 l(v)は次の性質を満たす。 1.vの左部分木の頂点uに対して l(u) < l(v) 2.vの右部分木の頂点uに対して l(u) > l(v) 3.Sの任意の要素aに対して l(v) = a となる頂点vはちょうどひとつある。 図はキーワード集合{begin,else,end,if,then}をあらわす2分探索木の例である。 いま、集合Sを表す2分探索木と要素aが与えられているときa∈Sならば"はい"、 そうでなければ"いいえ"を出力するアルゴリズムを考える。 このアルゴリズムは、木の根rについて一回だけ再帰手続きSEARCH(a,r)を呼び出せばよい。 ただし、SEARCH(a,v)はvを根とする部分木中に要素aが含まれているかを判定する。 含まれているときに値"はい"を、そうでなければ値"いいえ"を返す。 ・アルゴリズム procedure SEARCH(a,v): if a = l(v) then return "はい" else if a < l(v) then if vが左の子wを持つ then return SEARCH( ア ) else return "いいえ" else イ 以下の問題に答えよ。 (1) 上のアルゴリズムのア,イを埋めよ。 (2) 上のアルゴリズムを参考にして、集合Sからのデータの削除DELETE(a,S)を考える。 削除すべき要素aが頂点vのラベルであったとする。そのとき次の3つの場合について、行うべき操作を記述せよ。 (i) 頂点vが葉である (ii) 頂点vの子が1個ある (iii) 頂点vの子が2個ある 以上です。 設問(1)は解けました。 答えは ア: a,w イ: a > l(v) then if vが右の子wを持つ then return SEARCH(a,w) else return "いいえ" になるのではないかと思います。 設問(2)についてなのですが、それぞれの場合について、どのような操作をすればよいのかは、 参考書などを読んで理解したのですが、どのように記述したらよいかがわかりません。 長文になってしまい申し訳ないのですが、回答よろしくお願いいたします。

  • データ構造とアルゴリズムの問題が分かりません。

    以下の問題で悩んでいます。 1 配列とリストでデータを末尾に追加する場合の時間計算量をO記法で表せ。 2 配列とリスト、それぞれの時間計算量以外の利点と欠点をなるべく多く挙げよ。 3 データ構造「スタック」、「キュー」を配列もしくはリストで実現した場合、それぞれの利点と欠点を挙げよ。 4 アルゴリズム「線形探索」、「二分探索」で特定のデータを検索するための時間計算量をO記法で表し、またその理由も記述せよ。 5 データを検索する操作のほうが多い場合と、データを追加する操作が多い場   合、 「線形探索」と「二分探索」どちらが有利か理由をつけて述べよ。 1は、挿入と削除はO記法で表せたのですが、追加が分かりませんでした。 2は配列の利点はランダムアクセス可能な点と任意のデータをすぐに扱える点の2点 リストの利点は扱うデータを自由に変えられる点の1点しか思いつかず、欠点はよく分かりませんでした。 3、4、5も理由をつけて説明しろと言われたら無理です。 テストに類題を出すと先生はおっしゃってたので、どうしてもすぐに回答が必要です。先生にも質問したのですが、テストに類題を出すから教えられない。自力で頑張れと言われ困っています。 どなたか御助力よろしくお願いいたします。

  • アルゴリズムに関する問題

    こんばんわ、いくつかの問題につまってしまったので解答と簡単な解説をお願いします; 【問1】 4桁の数字( a1a2a3a4 )をハッシュ法を用いて配列に格納したい。 ハッシュ関数をmod( a1 +a2 +a3 +a4 ,5 )とし、求めたハッシュ関数値に対応する位置の配列要素に格納する場合、9576は(ア)~(オ)のどこに入るか。 ここでmod(x,5)の値は、xを5で割った余りとする。 位置  配列 0  (ア) 1  (イ) 2  (ウ) 3  (エ) 4  (オ) 【問2】 相違なるn個のデータが昇順に整列された表がある。この表を1ブロックm個に分割し、各ブロックの最後尾のデータだけ線形検索することによって、目的のデータを探し出す。 次に当該ブロック内を線形検索して目的のデータを探し出す。 このときの平均探索(比較)回数は(ア)~(エ)のうちどれか。 ここでm<nとし、目的のデータは必ず表の中に存在するものとする。 (ア)  (イ)  (ウ)  (エ)  n    n          n    m n  ─    ─    m + ─   ─+─  m    2m         m    2 2m 【問3】 次の手順はシェルソートによる整列を示している。 データ列”7,2,8,3,1,9,4,5,6”を手順(1)~(4)に従って整列すると手順(3)を何回繰り返して完了するか。 ここで、〔〕は小数点以下を切り捨てる。 <手順> (1)〔データ数÷3〕→Hとする。 (2)データ列を互いにH要素分だけ離れた要素の集まりからなる部分列とし、それぞれの部分列を挿入方を用いて整列する。 (3)〔H÷3〕→Hとする (4)Hが0であればデータ列の整列は完了し、0でなければ(2)に戻る。 以上になります。