Showing
2 changed files
with
19 additions
and
5 deletions
| ... | @@ -921,6 +921,7 @@ void GraphItem::test() | ... | @@ -921,6 +921,7 @@ void GraphItem::test() |
| 921 | auto node_citation_map = boost::get(vertex_citation, *graph); | 921 | auto node_citation_map = boost::get(vertex_citation, *graph); |
| 922 | auto node_label_map = boost::get(vertex_name, *graph); | 922 | auto node_label_map = boost::get(vertex_name, *graph); |
| 923 | auto node_type_map = boost::get(vertex_type, *graph); | 923 | auto node_type_map = boost::get(vertex_type, *graph); |
| 924 | + auto node_pagerank_map = boost::get(vertex_pagerank, *graph); | ||
| 924 | vertex_iterator vi, vi_end; | 925 | vertex_iterator vi, vi_end; |
| 925 | for (boost::tie(vi, vi_end) = vertices(*graph); vi != vi_end; ++vi) { | 926 | for (boost::tie(vi, vi_end) = vertices(*graph); vi != vi_end; ++vi) { |
| 926 | if (node_type_map[*vi] != NODE_TYPE::NODE_PAPER) continue; | 927 | if (node_type_map[*vi] != NODE_TYPE::NODE_PAPER) continue; |
| ... | @@ -928,6 +929,16 @@ void GraphItem::test() | ... | @@ -928,6 +929,16 @@ void GraphItem::test() |
| 928 | node_citation_map[*vi]); | 929 | node_citation_map[*vi]); |
| 929 | } | 930 | } |
| 930 | 931 | ||
| 932 | + //page_rank(); | ||
| 933 | + qDebug("* pagerank start"); | ||
| 934 | + boost::graph::page_rank(*graph, node_pagerank_map); | ||
| 935 | + for (boost::tie(vi, vi_end) = vertices(*graph); vi != vi_end; ++vi) { | ||
| 936 | + printf("%s\t\t%f\n", node_label_map[*vi].c_str(), | ||
| 937 | + node_pagerank_map[*vi]); | ||
| 938 | + } | ||
| 939 | + qDebug("* pagerank end"); | ||
| 940 | + | ||
| 941 | + | ||
| 931 | 942 | ||
| 932 | qDebug("* test action end"); | 943 | qDebug("* test action end"); |
| 933 | } | 944 | } | ... | ... |
| ... | @@ -27,6 +27,7 @@ | ... | @@ -27,6 +27,7 @@ |
| 27 | #include <boost/graph/dijkstra_shortest_paths.hpp> | 27 | #include <boost/graph/dijkstra_shortest_paths.hpp> |
| 28 | #include <boost/graph/fruchterman_reingold.hpp> | 28 | #include <boost/graph/fruchterman_reingold.hpp> |
| 29 | #include <boost/graph/graph_traits.hpp> | 29 | #include <boost/graph/graph_traits.hpp> |
| 30 | +#include <boost/graph/page_rank.hpp> | ||
| 30 | #include <boost/graph/random_layout.hpp> | 31 | #include <boost/graph/random_layout.hpp> |
| 31 | #include <boost/graph/topology.hpp> | 32 | #include <boost/graph/topology.hpp> |
| 32 | #include <boost/regex.hpp> | 33 | #include <boost/regex.hpp> |
| ... | @@ -69,11 +70,13 @@ enum vertex_position_t { vertex_position }; | ... | @@ -69,11 +70,13 @@ enum vertex_position_t { vertex_position }; |
| 69 | enum vertex_type_t { vertex_type }; | 70 | enum vertex_type_t { vertex_type }; |
| 70 | enum vertex_record_t { vertex_record }; | 71 | enum vertex_record_t { vertex_record }; |
| 71 | enum vertex_citation_t { vertex_citation }; | 72 | enum vertex_citation_t { vertex_citation }; |
| 73 | +enum vertex_pagerank_t { vertex_pagerank }; | ||
| 72 | namespace boost { | 74 | namespace boost { |
| 73 | BOOST_INSTALL_PROPERTY(vertex, position); | 75 | BOOST_INSTALL_PROPERTY(vertex, position); |
| 74 | BOOST_INSTALL_PROPERTY(vertex, type); | 76 | BOOST_INSTALL_PROPERTY(vertex, type); |
| 75 | BOOST_INSTALL_PROPERTY(vertex, record); | 77 | BOOST_INSTALL_PROPERTY(vertex, record); |
| 76 | BOOST_INSTALL_PROPERTY(vertex, citation); | 78 | BOOST_INSTALL_PROPERTY(vertex, citation); |
| 79 | + BOOST_INSTALL_PROPERTY(vertex, pagerank); | ||
| 77 | } | 80 | } |
| 78 | enum NODE_TYPE { | 81 | enum NODE_TYPE { |
| 79 | NODE_PAPER, | 82 | NODE_PAPER, |
| ... | @@ -94,8 +97,9 @@ typedef boost::property<vertex_index_t, int, | ... | @@ -94,8 +97,9 @@ typedef boost::property<vertex_index_t, int, |
| 94 | boost::property<vertex_position_t, point, //좌표값 | 97 | boost::property<vertex_position_t, point, //좌표값 |
| 95 | boost::property<vertex_type_t, int, //타입. enum NODE_TYPE에 정의됨 | 98 | boost::property<vertex_type_t, int, //타입. enum NODE_TYPE에 정의됨 |
| 96 | boost::property<vertex_record_t, int, //이웃 노드 개수 | 99 | boost::property<vertex_record_t, int, //이웃 노드 개수 |
| 97 | - boost::property<vertex_citation_t, int> //피인용수 | 100 | + boost::property<vertex_citation_t, int, //피인용수 |
| 98 | - >>>> | 101 | + boost::property<vertex_pagerank_t, double> //페이지랭크 값 |
| 102 | + >>>>> | ||
| 99 | > VertexProperties; | 103 | > VertexProperties; |
| 100 | typedef boost::adjacency_list< | 104 | typedef boost::adjacency_list< |
| 101 | listS, //outEdgeList | 105 | listS, //outEdgeList |
| ... | @@ -122,9 +126,8 @@ namespace { | ... | @@ -122,9 +126,8 @@ namespace { |
| 122 | const int NODE_SIZE = 4; | 126 | const int NODE_SIZE = 4; |
| 123 | const int LAYOUT_MODE = GRAPH_LAYOUT::RANDOM_LAYOUT; | 127 | const int LAYOUT_MODE = GRAPH_LAYOUT::RANDOM_LAYOUT; |
| 124 | //const int SCREEN_SIZE = 3000; | 128 | //const int SCREEN_SIZE = 3000; |
| 125 | - const int SCREEN_SIZE = 500; | 129 | + const int SCREEN_SIZE = 3000; |
| 126 | - const int READ_LINE_UNIT = 100; //한 번에 몇 라인을 읽을지 | 130 | + const int READ_LINE_UNIT = 10; //한 번에 몇 라인을 읽을지 |
| 127 | - //const int READ_LINE_UNIT = 100; | ||
| 128 | 131 | ||
| 129 | /* curl processor */ | 132 | /* curl processor */ |
| 130 | curl_processor _curl_processor; | 133 | curl_processor _curl_processor; | ... | ... |
-
Please register or login to post a comment