忍者ブログ
MASTER →  ADMIN / NEW ENTRY / COMMENT
現代魔法(nearly equal 情報技術)を勉強中な人のメモ(チラシの裏)
/ 2024/03/29 (Fri) / 編集
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

/ 2008/05/19 (Mon) / 編集
頑張った!俺頑張った!!

というわけで最小木を作ってました、しかもあえてクルスカル法で、でもあれ、ヒープをあきらめて順位付きキューにしてしまった俺を許してくれ、、、

だがなんか「Segmentation fault」が出たので、せっかくだからGDBを(始めて)使ってみたw


[e055717:~/Documents/4-1/アルゴリズム論/programs/31]%gcc -g MST_Kruskal.c -o kruskal
[e055717:~/Documents/4-1/アルゴリズム論/programs/31]%gdb kruskal 13 23 ../glaph_weight_sample.txt
Excess command line arguments ignored. (23 ...)
GNU gdb 6.3.50-20050815 (Apple version gdb-768) (Tue Oct 2 04:11:19 UTC 2007)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "powerpc-apple-darwin"...Reading symbols for shared libraries ... done

/Users/e055717/Documents/4-1/アルゴリズム論/programs/31/13: No such file or directory.
Unable to access task for process-id 13: (os/kern) failure.
(gdb)
ですよね〜〜(笑)
そりゃそんなファイルねぇよ、あれ?じゃあどうやってプログラムに引数渡すんだ?

調べてみたら
(gdb) run 13 23 ../glaph_weight_sample.txt
でした、でもって実行してみると
Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x111440e0
0x000035bc in find (x=5, y=44, doit=1) at MST_Kruskal.c:204
204 while(dad[j] > 0)j=dad[j];

ok把握、つまり配列dadの数が足りない訳ですね?たしかに44個は、、、
あれまてよ?findを呼び出してんのは「find( getNodeID(e[m].v1),getNodeID(e[m].v2),1 )」なわけで、getNodeIDは
//文字コードをIDに変換
int getNodeID(char *nodeName){
return (int)(nodeName-'A'+1);
}
なわけだから、「y=44」になるには「'A'-1+44」な文字でなければならないわけで、ASCIIコードでいうと「A(65)-1+44」つまり「l」?いやいや、そんなNodeつかって、、、「set e[13] : E <-> l : 4」ますねはい、、、 ようはグラフのファイルの入力ミスだったというおちw shift押し忘れてたわww

というわけでメモ
コンパイルするときにはgccを使う、そしてgオプションをつける。
実行するときには「%gdb 実行ファイル」だけ、引数はあとで渡す
引数は「(gdb) run 13 23 ../glaph_weight_sample.txt」みたいな感じで渡す


今回の教訓は「gdb万歳!」でしたwこれgdbなかったら絶対気づかんかったねこれ
あと「途中経過はこまめに出力」、これ大事だね、これやってなかったら変数追跡とかしないといけなかったね、デバッグフラグ用意しとくと後で見直す時すっごくべんりだよ〜 と推奨してみる。


さてと、あとは最短経路か、、、 
「val[k]+t->w をtの優先度とする順位優先探索で実現される」、、、マジで!?ってことは順位優先探索(最小木につかう)を実装しないといけないの?せっかくクルスカル法でやったのに!
まぁ目処は立ったからいいか、、、


さてと、ぱっぱと実装してwebコミックのサイトでも巡回するかなぁ

拍手[0回]

PR
忍者ブログ [PR]