又是一個半夜三點在寫網誌的時候~
距離上一篇真的很遙遠了-..-
從開始碰JAVA到前一陣子,才真正稍微了解什麼叫做"物件"
其實說穿了"物件"的精神好像就是有彈性一點
可惜我從以前都是用結構語言寫-..- ............
只能說論文讓人成長啊!!!
上上星期用三天兩夜的時間把論文的CF、TrustPrediction、TrustPropagation的推薦寫完
雖然沒有相當"物件"
但是已經開始會在寫程式之前分解這個程式需要哪些method
我想這是和之前寫變數計算的最大差別吧...
只能說梁凱凱很偉大XD 要看很多人的程式
我覺得我的試寫的最沒架構的-..-
總歸一句話 就是沒彈性啦!
看完學長的程式之後~只能說自己進步的空間就像是從海拔0公尺爬到聖母峰頂的距離一樣~
寫到現在比較熟的也只有ArrayList HashMap 陣列這些小東西
所有的方法都用暴力法XD
Iterator一直很不熟....List我也不是很了....
不過...............
我想~ 從學長的程式中 我應該可以漸漸了解這些資料結構吧-..-a
至於論文結果
我只能說慘不忍睹
希望用了新的training/testing data會比較好~
明天再戰!!!(明明就已經是今天了QQ~~~)
老闆~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~救命啊!!!!!!!!!!
##EasyReadMore##
JAVA學習筆記:以DFS (深度優先搜尋) 尋找兩節點間所有路徑
現在是深夜2:47
結果我居然在寫JAVA學習筆記....
其實心情低落了三四天了...
繼上星期週末回家之後為了解決6步以內2 node所有的路徑數
首先我使用了老闆所說的用矩陣相乘去找到2步、3步...到6步
正當我花了一整天寫到半夜也已經把方法都寫完的時候~~
我學習同門不點一姐的精神~ 把測試用的網路畫在紙上
開始一條一條走,驗算這些矩陣到底是不是正確的時候....
悲劇發生了
對
使用矩陣來計算有向圖,會造成迴路的問題
也就是說,當矩陣相乘第三次的時候
如果A→B,B→A,而我們要找A→C,
三步的路徑中就會包含這一條A→B→A→C
上網查了之後,發現有網友指出矩陣在迴路方面是很難解決的...
繼續查詢的結果是,建議使用DFS─深度優先搜尋,來解決路徑尋找的問題
DFS演算法我也懶得說了~ 網路上實在族繁不及備載
比較麻煩的是,知道DFS我又要怎麼實現路徑尋找呢?
只能說上天還算是眷顧我~ 藉由陳博士的協助下,他幫我找了一個論壇網頁
裡面正好是在討論我一直在尋找的問題~
更貼心的是~ 居然有人把他的程式碼貼上來XD
讓我這個不才研究生可以直接引用T^T
參考網址如下
http://stackoverflow.com/questions/58306/graph-algorithm-to-find-all-connections-between-two-arbitrary-vertices
也因為這個討論串很詳細,所以我在改成我需要的格式其實沒有花太久的時間...
簡單來說,網頁中的Graph.java其實就是指建立有向網路圖的類別
裡面有幾個方法~ 首先是增加新的edge,只要輸入兩個node 前者當KEY,後者放入作為value的linkedlist中~
然後也有檢查雙向edge的方法~
還有去尋找鄰居的方法等等~
Search.java則是實際運用Graph類別,把兩個相連的節點丟入Graph中~
設立起點跟終點之後,建立breadthFirst這個物件就可以找出起點跟終點的所有路徑了~
恩 我寫得真複雜~ 但事實上這個作者寫得真的不錯
只是我這個傻子後來還是遇到問題了....
QQ 邏輯阿邏輯
我參~~~~~不透你阿!!
結果我居然在寫JAVA學習筆記....
其實心情低落了三四天了...
繼上星期週末回家之後為了解決6步以內2 node所有的路徑數
首先我使用了老闆所說的用矩陣相乘去找到2步、3步...到6步
正當我花了一整天寫到半夜也已經把方法都寫完的時候~~
我學習同門不點一姐的精神~ 把測試用的網路畫在紙上
開始一條一條走,驗算這些矩陣到底是不是正確的時候....
悲劇發生了
對
使用矩陣來計算有向圖,會造成迴路的問題
也就是說,當矩陣相乘第三次的時候
如果A→B,B→A,而我們要找A→C,
三步的路徑中就會包含這一條A→B→A→C
上網查了之後,發現有網友指出矩陣在迴路方面是很難解決的...
繼續查詢的結果是,建議使用DFS─深度優先搜尋,來解決路徑尋找的問題
DFS演算法我也懶得說了~ 網路上實在族繁不及備載
比較麻煩的是,知道DFS我又要怎麼實現路徑尋找呢?
只能說上天還算是眷顧我~ 藉由陳博士的協助下,他幫我找了一個論壇網頁
裡面正好是在討論我一直在尋找的問題~
更貼心的是~ 居然有人把他的程式碼貼上來XD
讓我這個不才研究生可以直接引用T^T
參考網址如下
http://stackoverflow.com/questions/58306/graph-algorithm-to-find-all-connections-between-two-arbitrary-vertices
也因為這個討論串很詳細,所以我在改成我需要的格式其實沒有花太久的時間...
簡單來說,網頁中的Graph.java其實就是指建立有向網路圖的類別
裡面有幾個方法~ 首先是增加新的edge,只要輸入兩個node 前者當KEY,後者放入作為value的linkedlist中~
然後也有檢查雙向edge的方法~
還有去尋找鄰居的方法等等~
Search.java則是實際運用Graph類別,把兩個相連的節點丟入Graph中~
設立起點跟終點之後,建立breadthFirst這個物件就可以找出起點跟終點的所有路徑了~
恩 我寫得真複雜~ 但事實上這個作者寫得真的不錯
只是我這個傻子後來還是遇到問題了....
QQ 邏輯阿邏輯
我參~~~~~不透你阿!!
JAVA學習筆記:不同資料型態互轉
以前碰的都是PHP,跟JAVA比起來是很簡單的語言QQ
最近在面對事實開始寫的結果,知道自己肉腳以外,還深深的體悟到以前資結學的相當的差
言歸正傳XD
今天在寫一些運算的時候才發現,如果是用字串要轉其他資料型態,跟其他整數、浮點數互轉,
其實方法不太一樣@@~
之前在寫的時候,遇到的都是字串轉整數等等的問題~
以字串轉整數為例,使用的方法如下:
String xxx = "1234";
int x = Integer.parseInt(xxx); //使用 Integer.parseInt
而字串轉其他型態如下:
字串轉布林 boolean b=new Boolean(s).booleanValue();
轉長整數 long l=Long.parseLong(s);
轉浮點數 float f=Float.parseFloat(s);
轉倍精確度double d=Double.parseDouble(s);
但是! 如果只是整數想轉double
其實只要做這樣的動作 @@
-..- 結果我這菜鳥又傻傻的用了Double.parseDouble().....
大家不要忘了唷!! >.^
最近在面對事實開始寫的結果,知道自己肉腳以外,還深深的體悟到以前資結學的相當的差
言歸正傳XD
今天在寫一些運算的時候才發現,如果是用字串要轉其他資料型態,跟其他整數、浮點數互轉,
其實方法不太一樣@@~
之前在寫的時候,遇到的都是字串轉整數等等的問題~
以字串轉整數為例,使用的方法如下:
String xxx = "1234";
int x = Integer.parseInt(xxx); //使用 Integer.parseInt
而字串轉其他型態如下:
字串轉布林 boolean b=new Boolean(s).booleanValue();
轉長整數 long l=Long.parseLong(s);
轉浮點數 float f=Float.parseFloat(s);
轉倍精確度double d=Double.parseDouble(s);
但是! 如果只是整數想轉double
其實只要做這樣的動作 @@
int i = 20; //(double)為強制轉形 double d=(double) i ;
-..- 結果我這菜鳥又傻傻的用了Double.parseDouble().....
大家不要忘了唷!! >.^