• 締切済み

整列・探索アルゴリズムの利用

こんにちは、はじめまして。 今日からこちらのお世話になります。 よろしくお願いします。 さて、早速質問ですが、 整列・探索アルゴリズムについて詳しく調べているのですが、数日検索してみてもなかなかわかりやすい説明がなく、困っています。特にその整列・探索アルゴリズムがどのような情報システムの中でどのように利用されているのかの例を教えていただければと思います。私はパソコンについては多少の知識はありますが、プログラム系ともなるとお手上げの状態です。よろしくお願いします。 ※初めての利用で質問等に不備がございましたらお教えください。

みんなの回答

noname#182251
noname#182251
回答No.1

整列・探索アルゴリズムを直接いじる情報技術者は非常に少ないと思います。理由は 1.たいていのプログラミング言語は整列や探索のための手段が用意されている 2.大量のデータを扱う場合はデータベースを使用することがほとんどで、その場合はデータベースが整列や探索をやってくれる 私の場合、以前必要があってハッシングを教科書片手にコーディングしたことがありますが、まれなケースでした。 アドバイスついでにいえば、カテゴリーを「その他データベース」に換え、例など挙げて具体的にこのような回答が欲しいと示してはいかがでしょうか?これで回答が着く保証は出来ませんが(^^;

関連するQ&A

  • 整列・探索アルゴリズム

    整列アルゴリズムと探索アルゴリズムは 情報システムの中で具体的にどこで利用されているのでしょうか? 例えば、 銀行では、管理している口座番号から探索アルゴリズムを利用して預金者が残高照会出来る といった具体的な例でお願い致します。 出来うる限りの多くの使用例を集めなくてはなりません。 お願い致します。

  • アルゴリズムについて

    最近プログラミングに興味を持ち出して勉強しているんですが、探索とかでいろんなアルゴリズムが出てきてプログラムで説明がしてあり、あまり理解できません。  図などで分かりやすくアルゴリズムについて説明しているサイトや、お勧めの文献があったら教えてください。お願いします。

  • 探索プログラムの速さの計算方法を教えてください。

    以下が問題です。 「長さがNの系列に対して3nμ秒で探索を完了する線形プログラムと 4log_2(n)μ秒で探索を完了する二分探索プログラムと 2nlog_2(n)μ秒で整列を完了するプログラムがある。 これらのプログラムを利用して、長さが1024の未整列のデータ系列Sに対し、ある要素が含まれているかどうか探索したい。このとき以下の問いに答えよ。ここでの検索要求とは「系列Sにある要素Xが含まれているかどうか判定すること」とする。」 ・検索要求が1回、5回、10回の場合それぞれの最も速い探索方法とその時間を述べよ。 計算方法と答えを教えてください。

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

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

  • ☆★大学院入試のアルゴリズムに関する科目について★☆

     ご覧頂きありがとうございます、私は大学の機械科に在籍している3年生です。  来年の8月に電気通信大学の大学院(IS)を受験する予定なのですが、入学試験科目の中にデータ構造とアルゴリズムという本格的には勉強したことのない科目があります。  そこでこの科目についてお勧めな参考書、勉強法などがありましたら教えて下さい、私はC言語は使えるのでC言語で説明されている参考書でも構いません、よろしくお願いします。 -----------------------------詳しい範囲-------------------------------    [データ構造とアルゴリズム] 計算機のプログラミングで用いられるアルゴリズムとデータ構造についての理解を問う。具体的には、線形リスト,スタック、キュー、探索、整列、グラフアルゴリズム、アルゴリズム解析などから出題する。基本的なプログラミングの素養を必要とする。

  • アルゴリズム(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ある質問をする。 2質問後、「グーグルなどの検索システムで、こういうキーワードで検索したら、すぐに答えが見つかるかも知れない」と思い、自分で検索してみる。 3たった今、質問回答システムで投稿したばかりの「自分の質問」が検索トップに躍り出る! 4「えー! 私の質問ってそんなに世間の関心が高かったの?  投稿数分後に検索トップにあっという間に出てくるなんて、  もしかして今頃回答が数百件も殺到しているのでは!!??」  と思い、自分の質問に再度アクセスする 5 回答ゼロ件、”この質問は役に立った”もゼロ件。 6 なんだこりゃ? なぜたった数分前の質問が、世界有数の検索システムで一位なの? グーグルってどういう基準で探索してくるのでしょうか? もしかしてグーグルは 「同一のパソコンから投稿した質問を検索一位に持ってくる」 という仕組みなのでしょうか?

  • 二分探索アルゴリズムの終了条件について

    いつもお世話になっています。 現在他人のプログラムを読解する力をつけようと 訓練しています。 以下の文はとあるアルゴリズム本の2分探索の個所を 抜粋したものです。 int bs(*array, size, mokuteki) {   ue=size-1, sita=0;   while(1){     naka=(sita+ue) / 2;     if(array[naka] == mokuteki)       return ARU;     else if(sita > ue) //・・・・・・★       return NAI;     else {       if(array[naka] < mokuteki)         sita = naka+1;       else         ue = naka-1;     }   } } ここで★部分の終了条件なのですが、なぜ   sita >= ue でいけないのか自分では理解できません。 要はsitaとueが同じ値になり、目的値が見つからなかった のに再度ループする必要があるのか?、ということです。 特に明確な答えはいりませんがぜひ ご意見を聞かせてください。 ちなみに作者は 「ue==sitaの状態ならば、幅1の範囲がありますから  ループをもう一回実行する必要があります。」 と書いています。私には理解できません。 ちなみにこの本は「Javaで学ぶアルゴリズムとデータ構造」 という本です。だいたい一通り読みましたが読んでて 楽しいしわかりやすいし良書だと思います。高価ですが・・・。

  • アルゴリズムの問題-文字列探索

    基本情報技術者の勉強をしているのですが、午後の問題のアルゴリズム(文字列探索)でつまっています。 どなたか、アドバイスいただけますでしょうか? 以下、長くなってしまって申し訳ないです。 複数行の文字列からなるファイルの各行を、与えられた検索文字列で検索し、見つかった場合に、その行番号と開始位置を印字します。 例:検索文字列 YA   ファイル内容    MINATOKU TORANOMON    CHIYODAKU KASUMIGASEKI    SHIBUYAKU SHIBUYA 印字結果 行番号-3 開始位置-6 行番号-3 開始位置-16 【宣言部は省略してあります】 ・ファイルを開く ・LN←0 ・R()←検索文字列 ・RN←文字数 ・レコード入力(ファイル,M(),sts) ■sts=0 │・MN←ファイルの文字列の文字列長 │・LN←LN+1 │・K←1 │■K<=MN-RN+1 ││・L←1 ││■M(K+L-1)=R(L)かつL<=RN │││・L←L+1 ││■ ││▲L>RN │││・LNとKを印字  ・・・・ここが分かりません ││▼ │■ │・レコード入力(ファイル,M(),sts) ■ ・ファイルを閉じる Kに数値を格納する記述が見当たりません。 Kをカウントアップするか、数値を代入する必要があると思うのですが、どうなのでしょうか? ※問題の量が多いので、省略している部分もあります。質問内容が分からなかったら、補足要求してください。 よろしくお願いいたします。

  • C言語 クイックソートについて

    以下の数字を用いて・・・・ num[10] = {21, 46, 87, 9, 32, 33, 57, 87, 12, 43} クイックソートで整列する時,データの入れ替え状況,配列の内容の変化について,データの入れ替え過程をプログラムでない形で説明をお願いします。アルゴリズムの特徴がわかる説明と入れ替え過程を示してほしいです。 以下の数字を用いてお願いします。 例: ●●で分割: {                    } ●●で分割: {                     }           ・           ・           ・           ・ 整列後: {                     }