Changeset 2386:81b47fc5c444 in lemon-0.x for lemon/full_graph.h
- Timestamp:
- 03/02/07 19:04:28 (17 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@3217
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/full_graph.h
r2384 r2386 57 57 typedef True EdgeNumTag; 58 58 59 Node operator()(int i ndex) const { return Node(index); }59 Node operator()(int ix) const { return Node(ix); } 60 60 int index(const Node& node) const { return node.id; } 61 61 … … 130 130 } 131 131 132 void first(Edge& e dge) const {133 e dge.id = _edgeNum-1;134 } 135 136 static void next(Edge& e dge) {137 --e dge.id;138 } 139 140 void firstOut(Edge& e dge, const Node& node) const {141 e dge.id = _edgeNum + node.id - _nodeNum;142 } 143 144 void nextOut(Edge& e dge) const {145 e dge.id -= _nodeNum;146 if (e dge.id < 0) edge.id = -1;147 } 148 149 void firstIn(Edge& e dge, const Node& node) const {150 e dge.id = node.id * _nodeNum;132 void first(Edge& e) const { 133 e.id = _edgeNum-1; 134 } 135 136 static void next(Edge& e) { 137 --e.id; 138 } 139 140 void firstOut(Edge& e, const Node& n) const { 141 e.id = _edgeNum + n.id - _nodeNum; 142 } 143 144 void nextOut(Edge& e) const { 145 e.id -= _nodeNum; 146 if (e.id < 0) e.id = -1; 147 } 148 149 void firstIn(Edge& e, const Node& n) const { 150 e.id = n.id * _nodeNum; 151 151 } 152 152 153 void nextIn(Edge& e dge) const {154 ++e dge.id;155 if (e dge.id % _nodeNum == 0) edge.id = -1;153 void nextIn(Edge& e) const { 154 ++e.id; 155 if (e.id % _nodeNum == 0) e.id = -1; 156 156 } 157 157 … … 208 208 /// by the range from 0 to \e nodeNum()-1 and the index of 209 209 /// the node can accessed by the \e index() member. 210 Node operator()(int i ndex) const { return Parent::operator()(index); }210 Node operator()(int ix) const { return Parent::operator()(ix); } 211 211 212 212 /// \brief Returns the index of the node. … … 251 251 252 252 253 Node operator()(int i ndex) const { return Node(index); }253 Node operator()(int ix) const { return Node(ix); } 254 254 int index(const Node& node) const { return node.id; } 255 255 … … 272 272 Node source(Edge e) const { 273 273 /// \todo we may do it faster 274 return Node(( (int)sqrt((double)(1 + 8 * e.id)) + 1) / 2);274 return Node((int(sqrt(double(1 + 8 * e.id)) + 1)) / 2); 275 275 } 276 276 277 277 Node target(Edge e) const { 278 int s ource = ((int)sqrt((double)(1 + 8 * e.id)) + 1) / 2;;279 return Node(e.id - (source) * (source- 1) / 2);278 int s = (int(sqrt(double(1 + 8 * e.id)) + 1)) / 2; 279 return Node(e.id - s * (s - 1) / 2); 280 280 } 281 281 … … 323 323 }; 324 324 325 void first(Node& n ode) const {326 n ode.id = _nodeNum - 1;327 } 328 329 static void next(Node& n ode) {330 --n ode.id;331 } 332 333 void first(Edge& e dge) const {334 e dge.id = _edgeNum - 1;335 } 336 337 static void next(Edge& e dge) {338 --e dge.id;339 } 340 341 void firstOut(Edge& e dge, const Node& node) const {342 int src = n ode.id;325 void first(Node& n) const { 326 n.id = _nodeNum - 1; 327 } 328 329 static void next(Node& n) { 330 --n.id; 331 } 332 333 void first(Edge& e) const { 334 e.id = _edgeNum - 1; 335 } 336 337 static void next(Edge& e) { 338 --e.id; 339 } 340 341 void firstOut(Edge& e, const Node& n) const { 342 int src = n.id; 343 343 int trg = 0; 344 e dge.id = (trg < src ? src * (src - 1) / 2 + trg : -1);344 e.id = (trg < src ? src * (src - 1) / 2 + trg : -1); 345 345 } 346 346 347 347 /// \todo with specialized iterators we can make faster iterating 348 void nextOut(Edge& e dge) const {349 int src = source(e dge).id;350 int trg = target(e dge).id;348 void nextOut(Edge& e) const { 349 int src = source(e).id; 350 int trg = target(e).id; 351 351 ++trg; 352 e dge.id = (trg < src ? src * (src - 1) / 2 + trg : -1);353 } 354 355 void firstIn(Edge& e dge, const Node& node) const {356 int src = n ode.id + 1;357 int trg = n ode.id;358 e dge.id = (src < _nodeNum ? src * (src - 1) / 2 + trg : -1);352 e.id = (trg < src ? src * (src - 1) / 2 + trg : -1); 353 } 354 355 void firstIn(Edge& e, const Node& n) const { 356 int src = n.id + 1; 357 int trg = n.id; 358 e.id = (src < _nodeNum ? src * (src - 1) / 2 + trg : -1); 359 359 } 360 360 361 void nextIn(Edge& e dge) const {362 int src = source(e dge).id;363 int trg = target(e dge).id;361 void nextIn(Edge& e) const { 362 int src = source(e).id; 363 int trg = target(e).id; 364 364 ++src; 365 e dge.id = (src < _nodeNum ? src * (src - 1) / 2 + trg : -1);365 e.id = (src < _nodeNum ? src * (src - 1) / 2 + trg : -1); 366 366 } 367 367 … … 422 422 /// by the range from 0 to \e nodeNum()-1 and the index of 423 423 /// the node can accessed by the \e index() member. 424 Node operator()(int i ndex) const { return Parent::operator()(index); }424 Node operator()(int ix) const { return Parent::operator()(ix); } 425 425 426 426 /// \brief Returns the index of the node. … … 479 479 FullBpUGraphBase() {} 480 480 481 void construct(int a NodeNum, int bNodeNum) {482 _aNodeNum = a NodeNum;483 _bNodeNum = b NodeNum;484 _edgeNum = a NodeNum * bNodeNum;481 void construct(int ann, int bnn) { 482 _aNodeNum = ann; 483 _bNodeNum = bnn; 484 _edgeNum = ann * bnn; 485 485 } 486 486 … … 522 522 }; 523 523 524 Node aNode(int i ndex) const { return Node(index << 1); }525 Node bNode(int i ndex) const { return Node((index << 1) + 1); }524 Node aNode(int ix) const { return Node(ix << 1); } 525 Node bNode(int ix) const { return Node((ix << 1) + 1); } 526 526 527 527 int aNodeIndex(const Node& node) const { return node.id >> 1; } … … 696 696 } 697 697 698 FullBpUGraph(int a NodeNum, int bNodeNum) {699 Parent::construct(a NodeNum, bNodeNum);698 FullBpUGraph(int ann, int bnn) { 699 Parent::construct(ann, bnn); 700 700 } 701 701 … … 738 738 /// by the range from 0 to \e aNodeNum()-1 and the index of 739 739 /// the node can accessed by the \e aNodeIndex() member. 740 Node aNode(int i ndex) const { return Parent::aNode(index); }740 Node aNode(int ix) const { return Parent::aNode(ix); } 741 741 742 742 /// \brief Returns the B-node with the given index. … … 746 746 /// by the range from 0 to \e bNodeNum()-1 and the index of 747 747 /// the node can accessed by the \e bNodeIndex() member. 748 Node bNode(int i ndex) const { return Parent::bNode(index); }748 Node bNode(int ix) const { return Parent::bNode(ix); } 749 749 750 750 /// \brief Returns the index of the A-node.
Note: See TracChangeset
for help on using the changeset viewer.