「木構造」を含む日記 RSS

はてなキーワード: 木構造とは

2012-07-05

http://anond.hatelabo.jp/20120705093826

いや、ごめん。再帰というのは、木構造による再帰、でも、Switchによる再帰でも同じ。そのアルゴリズムで Call命令を使うのか?って事。

あとCでもswitchが嫌で かつ 再帰によるCall命令が許容されるなら、Tree関数ポインタ持たせて、関数ポインタで評価関数呼び出せばいいじゃん。

単純に要素だけ書けば

struct leaf{

  leaf *subleaf[2];

  int (*eval)(leaf *);

};

でよかろ 値を入れるときAddなら eval_add sub なら eval_sub を呼び出せばいい (データ構造と アルゴリズムの分離はCでもできる。)

どっちみち C++でも、子どものevalを親が呼ぶ 時点で call が呼ばれているから、それ再帰

 

というかC++自体が こういう vtableのC実装から 生まれている実装なので C++でできて、Cで実装できないって、テンプレとかそういうのぐらいだから

究極的にはvtalbe実装すればCでもできる。つか、昔のCのコードなんてVtableを第1引数として渡すようなものばっかだろ。

 

何が言いたいかというと、別に データ構造と アルゴリズムの分離は関数ポインタとVtableの実装によりCでもできる。

設計の問題と言語の問題が摩り替わってる。

switchテーブルが巨大化するのも 小さいクラスが無数にあるのも どっちも同じ事だよ。 

Swithならよい Classならよいってことはない。

http://anond.hatelabo.jp/20120705091019

いや、再帰は使わんと思うぞ・・・Stack Over Flow対策があるから自前で再帰は展開するぞ。

「Cならswitchテーブルを使った再帰関数で実現する必要がある」に対するレスなんだろうけど、飽くまでも「C以外の、継承オーバーライド機能がある言語では例題とほぼ同じ形で実装できるのに対してその機能がない言語では『関数内でswitchをして値ごとにdispatch、その後更に再帰』という原始的かつ全てのロジックを詰め込むせいでひとつ関数の行数が膨大になる問題を孕んでいる」という意味しか持たない。

確かにTopCoder再帰を使ったら撃墜される可能性がある事には同意だけど、今回の例ではプロコンの外側での事であってスタックオーバーフローしたなら例外をキャッチして後処理を行えば良い。

更に

問題を解くためにバイナリーツリーを使うことはあっても、バイナリーツリーを使う問題は出てこないわなぁ。

C++なら、setmapもあるし。

バイナリツリーを自前で構築して式を表現する例題(expression tree)と、set and mapは用途が違う。

setmapは本来、順序が定義できる要素をキーにしてそれそのものを保持するか、或いはそれに伴う値を結びつけて保持しておくもの

例題のexpression tree構造は「(必ずしもオペランドがふたつとは限らない)式の木を表現して、オーバーライドされたevalで式全体の評価を行う」もの

から目的が違う以上

あと 加算するか減産するかはアルゴリズムが持つものであって、木そのものが持つわけじゃない。

は成り立たない主張であるし、

全般的にその木構造なんかへんやろ。例題なのはわかるけど、それにしても、なんか変。

即興で書いたので変である事は否定しないとしても

開発言語なんて問題を解く道具であって、文章の綺麗さを競うものではないからなぁ。

C言語等のOOPが導入される前の言語で)綺麗に書く事ができないと問題を提供する側がそもそも「綺麗な解を前提とした問題」を出せない。

http://anond.hatelabo.jp/20120705081824

いや、再帰は使わんと思うぞ・・・Stack Over Flow対策があるから自前で再帰は展開するぞ。

それに 問題を解くためにバイナリーツリーを使うことはあっても、バイナリーツリーを使う問題は出てこないわなぁ。

C++なら、setmapもあるし。

あとは、分岐点が値を持ってないので、右に追加するか左に追加するかの判定ロジックも出来ないわなぁ。その構造だと。

あと 加算するか減産するかはアルゴリズムが持つものであって、木そのものが持つわけじゃない。

 

全般的にその木構造なんかへんやろ。例題なのはわかるけど、それにしても、なんか変。

 

開発言語なんて問題を解く道具であって、文章の綺麗さを競うものではないからなぁ。

2011-05-06

http://anond.hatelabo.jp/20110506165346

実際に文系理系を学んできた事と、文系気質・理系気質は別だという事を理解できないんです

部分集合と言って、文系気質・理系気質の集合を木構造で考えてる時点で、理解出来ていない事が良く分かります

2007-08-08

[][][][][]

縦横高さと tree からいきぺぢる。

「縦横高さ」が意図するものは次元だった。二次元の時は行列とも云えるのかな?

tree これははっきりしていた。所謂木構造。でも色々種類あるのね。

789
456
123

2次元、 "5" が空であってもアドレスは残る。

木構造は特に制約を定めなければ幾らでも伸びしろがある。次元は先に作っておいた次元が精一杯。次元の最小単位の中に別の次元を放り込むのは親の次元とは赤の他人だし……

n を選んで、次に m を選ぶ、これを繰り返して行くような作業をするとき、木構造でも幹線部分は密なので一見して次元に見える?

それが次元だったら深淵の底にたどり着くまで疎になっていかない、木構造だったらその限りではない、なのかしらん?

ログイン ユーザー登録
ようこそ ゲスト さん