締切済み B木のプログラムについて 2011/05/22 20:45 Javaアプレットで学ぶデータ構造とアルゴリズムを勉強中です。 「B木プログラムを作ってみよう」という演習問題なのですが、簡単がプログラムを教えていただけないでしょうか。 宜しくお願いいたします。 みんなの回答 (2) 専門家の回答 みんなの回答 Tacosan ベストアンサー率23% (3656/15482) 2011/05/23 23:03 回答No.2 「B木」と「バイナリツリー」とは違うものですが>#1, 「演習問題」なら「B木の概念」とか「どんなふうに作るのか」くらいは既に学んでいるのではないの? 通報する ありがとう 0 広告を見て他の回答を表示する(1) askaaska ベストアンサー率35% (1455/4149) 2011/05/23 10:39 回答No.1 バイナリツリー Java でぐぐると結構出てきます まずはそこから 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Java 関連するQ&A 二分探索木の行きがけ順走査 二分探索木の行きがけ順走査は、普通再起を使うと思います。 再起を使わず、しかも木以外のデータ構造を一切使わないでやることもできる聞いたのですが、具体的にはどうすればいいのでしょう。 木以外に何か使ってもいいのなら、 http://www.psg.cs.titech.ac.jp/pro1/11.pdf の『再起を使わないアルゴリズム』みたいにすれば良いことは調べてわかりました。 再起も使わないで出来るのであれば、自分でもJavaを使って書いてみようかと思っているのでカテゴリはJavaにしました。よろしくお願いします。 javaのステップアップ java初心者です。「やさしいJava」を読み終えたところなのですが、今後どのようなプログラムを組めば良いのか少し悩んでいます。 いちおう、アルゴリズムとデータ構造などを勉強しているのですが、具体的にそれらを組み込めるようなプログラムがイメージできないのです。初心者→中級者となって行く過程で、みなさんはどのようなプログラムを書いてこられたのでしょうか? また、javaのAPIなども勉強したいと思っているのですが、これらを組み込むようなプログラムもまた、さっぱり検討がつきません。よろしければお聞かせください。 ファイル上でB木 B木中のデータをメモリ上ではなくファイル上に展開したいのですが、何か効率のよい方法はあるでしょうか? ・1ファイルにB木のデータを保存させて一旦メモリにロードさせ、変更があればメモリ上でB木の更新をして、全データをファイルに書き出す だと効率がわるそうですし、 ・ツリー上のブロックごとに1ファイルを使う となると、ファイル数が増えそうですし。 MySQL等だとインデックスファイルは確か1ファイルになっていますよね。 B木系を扱うようなデータベースの基本的な構造をご存知の方、もしくはそのうな解説サイトをご存知の方、アドバイスをお願いします。 アルゴリズムの2-3-4木 アルゴリズムの2-3-4木 アルゴリズムの平衡木の一種である2-3-4木を使い、テキストファイルに書かれている文中の英単語1文字1文字を挿入し(同じ単語は1度だけ)、全ての単語の配置(パラグラフ、行数)を表示するというプログラムを考えているのですが、どのように組めばいいのかがわかりません。 例えばテキストファイルの文中に、studyという単語が1つ目のパラグラフの2行目、2つ目のパラグラフの4行目にあれば、 study (1,2) (2,4) と表示するプログラムです。2-3-4木ではどのようにデータを格納していくかはわかったのですが、データの挿入やノードの分割などをプログラムではどのように書けばいいのでしょうか。 どなたかご教授お願いいたします。 アプレットからサーバ側のプログラムを起動したいのですが… 仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。 UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。 とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。 では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、 ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。 もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか? とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら? ・webポートだけを開いて ・サーバ側のCプログラムを起動してその結果を受け取る ・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。 Applet+CGI? Applet+Servlet? RMI? JNI…? 助けてください…(TT) アルゴリズムのB木について B木がどんな構造なのかいまいち分かりません、詳しく分かりやすく載っているHPなどないでしょうか? 木構造(位相構造)を比較するアルゴリズムって? 木構造(位相構造)を2つ用意し、根からたどって比較してゆき、 差分をとるようなプログラムを書こうと思っています。 しかしアルゴリズムがまったくわからないので質問させていただきます。 子ノードの順番が異なる場合も同じものと見なすような条件で、 末端にノードが追加された程度の差異がわかればよいです。 (鏡に映した構造や、子ノードがABCという順だったのを、ACBにしたような構造は同じものと見なしたいということです。) このようなアルゴリズムというのはあるのでしょうか? 2分木と双方向線形リストを同時に実現する方法 ファイルに書かれている文字列を読み込み, (1)ソートしてファイル出力 (2)読み込んだ順と逆順にファイル出力 というプログラムを作成する場合, (1)は2分木のデータ構造を用いて実現したのですが,2分木のデータ構造をそのまま利用することで逆順に出力させることは可能でしょうか? 私は無理だと思うので,2分木に加えて双方向の線形リストになるようにポインタを設定する必要があると考えているのですが,もっと上手く実現するアルゴリズムはあるでしょうか? アドバイスを頂けるとありがたいです. javaのプログラムで間違い箇所が分からない。 <<Javaサンプルプログラム集:共立出版(株)という 書籍でjavaの勉強をしています。 付属のCD-ROMのサンプルプログラムコンパイルはできるのですが、アプレット起動出来ません。 何故なんでしょう?? データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。 データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。 データ構造とアルゴリズムについて学習しています。 (質問事項) ・データ構造とアルゴリズムの違いについて教えて頂けないでしょうか。 詳細に教えて頂けると大変助かります。 (私の現状) たとえば、データ構造は、単純なものでは、配列やコレクション、2分木などの構造で、アルゴリズムは2分木探索の実装方法だと思っています。 データ構造とアルゴリズムについては初心者です。 (現在、就職活動中で、これらを学ぶ必要がありご質問させて頂いています) どうか、皆様、教えて頂いた情報を最大限に活用させていただきますので、(皆様にとってはくだらない質問かもしれませんが…)どうぞよろしくお願いいたします。 アルゴリズムについて 今、c言語のアルゴリズムの勉強をしています。 入門書が3、4冊を読みました。c言語によるアルゴリズム辞典っていう本を見たら、ほんの少ししかならないです。 将来、プログラマになりたいです。アルゴリズムがプログラマにとって非常に重要ですので。そこで今プログラムの仕事をしている方に聞きたいです。アルゴリズムってどの程度勉強したらいいですか?入門書の場合は、精精木構造までですね。 HTMLにプログラムを埋めこむ方法 WEBでいろいろなプログラムを動かす場合にHTMLに埋めこみます ーー例えばJAVAを埋めこむ場合にはアプレットを使ったりーー アプレット以外に他にどんな方法がありますか?特にJAVA関係に ついてわかるとうれしいのですが。HTMLとJAVAの関係について 調べています。ご存知の方、お知恵拝借。 Java3Dで開発したプログラムを一般の人に見てもらうには 開発してきた回転機械の構造と運転状態を3Dアニメーションで一般の人に見てもらおうと考えてJava3Dによりプログラムを開発中です。 開発途中でインターネットを通して何人かの仲間に見てもらおうと思い仲間のパソコンにはJava3Dをインストールしてもらおうしましたが、多くの仲間はJavaをインストールし環境するのも嫌い、ましてJava3Dのインストールまではおよびもつかない状態です。 通常のパソコンにはJREだけは既にインストールされていますが、このJREだけでインターネットを通じて私が開発しているJava3Dによるプログラム(アプレット形式)を見てもらうには、どのようにすればよいでしょうか? 例えば、プログラムソースをサーブレット(Tomcatなど)で書き換えてWebサーバー上で動くようにすればよいのでしょうか? 私は、まだサーブレット(Tomcatなど)の知識もなく、これらもこれからの勉強ということになりますが、一般の人々に見てもらえるようにする最も簡単・早道な方法があればアドバイスをお願いします。 構文解析器を用いた電卓プログラムが見たいです。 授業でjavaの勉強をしています。 具体例がなくて全然理解できずに困っています。 構文解析器を用いた電卓プログラムについて学んでいるところなんですが、 アルゴリズムだけで実装の仕方がわかりません。 webで検索したのですが良いのが見つからず質問しました。 わかる方いましたら見せていただきたいです。 よろしくお願いします。 解析木の形式について 最近コンパイラの自作に興味を持ち、良い勉強にもなるだろうと思い作ってみようと考えたのですが、構文解析の結果を木構造で管理しようとしたとき疑問に思ったので、質問させていただきます。 内容は、解析木を作るときどれだけの単位で木を作ればいいのかということです。 例えばプログラム一つに一つの木なのか、一つの文に一つの木なのか… もし自由ということであれば、それぞれのメリットやデメリットも教えていただけるとありがたいです。 ’じゃんけん’をするプログラムをつくるには? JAVAで'じゃんけん'を3回勝負して勝ち負けを決めるゲームアプレットを作成したいのですが、 JAVA初心者の私に少し分かりづらいので、 作成経験がある方、サンプルなどのデータ提供お願いします。 結構困ってます。 dag(directed acyclic graph)であらわした算術式の計算 以下の問題が解けません。 1.演算子として+と*をもつ算術式の木から、共通の部分式をまとめてdagに変えるアルゴリズムを作れ。(Cでプログラムを作れ) 2.dagで表した算術式の値を求めるアルゴリズムを作れ。(Cでプログラムを作れ) です。 <dagの説明は、閉路の無い有向グラフということと、共通の部分式をもつ算術式の文法的な構造を表すのに便利だという性質が書いてありました。> 分からない点は、どうやって共通の部分式を認識するのか、またどういうデータ構造(リスト?配列?)で処理したらよいかです。 例:((a+b)*c+((a+b)+e)*((a+b)*c)で、a+bや(a+b)*cは共有されている部分式であり、これを表す頂点には入ってくる弧が2本以上ある。 アドバイスで構わないので、よろしくお願いします。 木構造の前置形と行きがけ順について はじめまして。今データ構造とアルゴリズムを勉強しているのですが、前置形でつまずいてしまいました。以下の問題を解くのですが、いまいち自分で出した答えに自身がないのです。 問題 式((a+b)+c*(d+e)+f)*(g+h)を前置形に変換せよ。 自分は、与えられた式を元に木を再現して、それから行きがけ順に並べたのですが。自信がないところは、ずばり、最初の項で和が3つあるところなんです。考え方の一つとして、枝分かれを3つという考え(すなわち、*++ab*c+def+gh)と、3つを一つの和ともう2つの和と分けて考える(すなわち*++ab+*c+def+gh)のと、どちらが正解なのでしょうか?といいますのも、defのところで、今度は逆に前置形からもとの式を作り直すときに違う式ができるのでは、と思うからです。 よろしくお願いします。 javaのアプレットについて javaの勉強をはじめたばかりのものです。 アプレットについて勉強しています。 ボタンを作って,それを押すと,全く,新しい 画面に移り変わると言うプログラムを作りたいです。 どのようにすればよいのか,また,どんな本で勉強 すればよいのか,教えてください。 C4.5について 決定木 現在,決定木の勉強をしていてます. そこでC4.5というアルゴリズムがあることを知りました. しかし,マニュアルが英語であらわされていて詳しい使い方がよくわかりません. 誰か使い方を知っている方は教えてもらえないでしょうか. よろしくお願いします.