Knowledge

Cuthill–McKee algorithm

Source 📝

36: 28: 763:) where the vertices in each level are visited in order of their predecessor's numbering from lowest to highest. Where the predecessors are the same, vertices are distinguished by degree (again ordered from lowest to highest). 664: 439: 398: 288: 475: 167: 200: 729: 695: 559: 532: 505: 254: 227: 126: 749: 603: 583: 360: 329: 87:) due to Alan George and Joseph Liu is the same algorithm but with the resulting index numbers reversed. In practice this generally results in less 802: 869: 611: 697:
ascending by minimum predecessor (the already-visited neighbor with the earliest position in R), and as a tiebreak ascending by
295: 847: 898: 76: 857: 903: 828:
J. A. George and J. W-H. Liu, Computer Solution of Large Sparse Positive Definite Systems, Prentice-Hall, 1981
815: 44: 893: 851: 698: 339: 299: 838: 760: 95: 406: 365: 267: 17: 444: 335: 131: 56: 172: 291: 68: 707: 673: 537: 510: 483: 232: 205: 104: 772: 756: 99: 816:"Ciprian Zavoianu - weblog: Tutorial: Bandwidth reduction - The CutHill-McKee Algorithm" 98:
algorithm used in graph algorithms. It starts with a peripheral node and then generates
863: 734: 588: 568: 345: 314: 887: 777: 88: 64: 72: 796: 60: 306: 35: 27: 877: 873: 34: 26: 256:. These nodes are ordered according to predecessors and degree. 755:
In other words, number the vertices according to a particular
302:
of the graph to reduce the bandwidth of the adjacency matrix.
659:{\displaystyle A_{i}:=\operatorname {Adj} (R_{i})\setminus R} 91:
than the CM ordering when Gaussian elimination is applied.
837:
The Reverse Cuthill-McKee Algorithm in Distributed-Memory
298:. The Cuthill–McKee algorithm is then a relabeling of the 94:
The Cuthill McKee algorithm is a variant of the standard
858:
A detailed description of the Cuthill–McKee algorithm
737: 710: 676: 614: 591: 571: 540: 513: 486: 447: 409: 368: 348: 317: 270: 235: 208: 175: 134: 107: 331:
of vertices which is the new order of the vertices.
798:
Reducing the bandwidth of sparse symmetric matrices
743: 723: 689: 658: 597: 577: 553: 526: 499: 469: 433: 392: 354: 323: 282: 248: 221: 194: 161: 120: 229:by listing all vertices adjacent to all nodes in 585:) and exclude the vertices we already have in 8: 384: 378: 736: 715: 709: 681: 675: 641: 619: 613: 590: 570: 545: 539: 518: 512: 491: 485: 456: 448: 446: 408: 367: 347: 316: 269: 240: 234: 213: 207: 180: 174: 133: 112: 106: 788: 650: 169:until all nodes are exhausted. The set 290:matrix we visualize the matrix as the 441:we iterate the following steps while 7: 305:The algorithm produces an ordered 31:Cuthill-McKee ordering of a matrix 25: 866:MATLAB's implementation of RCM. 81:reverse Cuthill–McKee algorithm 39:RCM ordering of the same matrix 18:Reverse Cuthill–McKee algorithm 647: 634: 457: 449: 387: 375: 1: 480:Construct the adjacency set 434:{\displaystyle i=1,2,\dots } 338:(the vertex with the lowest 848:Cuthill–McKee documentation 920: 393:{\displaystyle R:=(\{x\})} 71:sparsity pattern into a 801:In Proc. 24th Nat. Conf. 795:E. Cuthill and J. McKee. 283:{\displaystyle n\times n} 470:{\displaystyle |R|<n} 162:{\displaystyle i=1,2,..} 45:numerical linear algebra 195:{\displaystyle R_{i+1}} 59:and James McKee, is an 49:Cuthill–McKee algorithm 805:, pages 157–172, 1969. 745: 725: 691: 660: 599: 579: 555: 528: 501: 471: 435: 394: 356: 325: 284: 250: 223: 196: 163: 122: 40: 32: 870:reverse_cuthill_mckee 746: 726: 724:{\displaystyle A_{i}} 692: 690:{\displaystyle A_{i}} 661: 600: 580: 556: 554:{\displaystyle R_{i}} 529: 527:{\displaystyle R_{i}} 502: 500:{\displaystyle A_{i}} 472: 436: 395: 357: 326: 285: 251: 249:{\displaystyle R_{i}} 224: 222:{\displaystyle R_{i}} 197: 164: 123: 121:{\displaystyle R_{i}} 38: 30: 761:breadth-first search 735: 708: 674: 612: 589: 569: 538: 511: 484: 445: 407: 366: 346: 315: 268: 233: 206: 202:is created from set 173: 132: 105: 96:breadth-first search 852:Boost C++ Libraries 741: 731:to the Result set 721: 687: 656: 595: 575: 551: 524: 497: 467: 431: 390: 352: 334:First we choose a 321: 280: 264:Given a symmetric 246: 219: 192: 159: 118: 75:form with a small 41: 33: 872:RCM routine from 744:{\displaystyle R} 598:{\displaystyle R} 578:{\displaystyle R} 565:-th component of 355:{\displaystyle x} 336:peripheral vertex 324:{\displaystyle R} 57:Elizabeth Cuthill 16:(Redirected from 911: 899:Graph algorithms 841: 835: 829: 826: 820: 819: 812: 806: 793: 750: 748: 747: 742: 730: 728: 727: 722: 720: 719: 696: 694: 693: 688: 686: 685: 665: 663: 662: 657: 646: 645: 624: 623: 604: 602: 601: 596: 584: 582: 581: 576: 560: 558: 557: 552: 550: 549: 533: 531: 530: 525: 523: 522: 506: 504: 503: 498: 496: 495: 476: 474: 473: 468: 460: 452: 440: 438: 437: 432: 399: 397: 396: 391: 361: 359: 358: 353: 330: 328: 327: 322: 292:adjacency matrix 289: 287: 286: 281: 255: 253: 252: 247: 245: 244: 228: 226: 225: 220: 218: 217: 201: 199: 198: 193: 191: 190: 168: 166: 165: 160: 127: 125: 124: 119: 117: 116: 21: 919: 918: 914: 913: 912: 910: 909: 908: 904:Sparse matrices 884: 883: 844: 840:, slide 8, 2016 836: 832: 827: 823: 814: 813: 809: 794: 790: 786: 773:Graph bandwidth 769: 757:level structure 733: 732: 711: 706: 705: 677: 672: 671: 637: 615: 610: 609: 587: 586: 567: 566: 541: 536: 535: 514: 509: 508: 487: 482: 481: 443: 442: 405: 404: 364: 363: 344: 343: 313: 312: 266: 265: 262: 236: 231: 230: 209: 204: 203: 176: 171: 170: 130: 129: 108: 103: 102: 55:), named after 23: 22: 15: 12: 11: 5: 917: 915: 907: 906: 901: 896: 886: 885: 882: 881: 867: 861: 855: 843: 842: 830: 821: 807: 787: 785: 782: 781: 780: 775: 768: 765: 753: 752: 740: 718: 714: 702: 684: 680: 667: 666: 655: 652: 649: 644: 640: 636: 633: 630: 627: 622: 618: 606: 605: 594: 574: 548: 544: 521: 517: 494: 490: 466: 463: 459: 455: 451: 430: 427: 424: 421: 418: 415: 412: 389: 386: 383: 380: 377: 374: 371: 351: 320: 279: 276: 273: 261: 258: 243: 239: 216: 212: 189: 186: 183: 179: 158: 155: 152: 149: 146: 143: 140: 137: 115: 111: 24: 14: 13: 10: 9: 6: 4: 3: 2: 916: 905: 902: 900: 897: 895: 894:Matrix theory 892: 891: 889: 879: 875: 871: 868: 865: 862: 859: 856: 853: 849: 846: 845: 839: 834: 831: 825: 822: 817: 811: 808: 804: 800: 799: 792: 789: 783: 779: 778:Sparse matrix 776: 774: 771: 770: 766: 764: 762: 759:(computed by 758: 738: 716: 712: 703: 700: 699:vertex degree 682: 678: 669: 668: 653: 642: 638: 631: 628: 625: 620: 616: 608: 607: 592: 572: 564: 546: 542: 519: 515: 492: 488: 479: 478: 477: 464: 461: 453: 428: 425: 422: 419: 416: 413: 410: 401: 381: 372: 369: 349: 341: 337: 332: 318: 311: 309: 303: 301: 297: 293: 277: 274: 271: 259: 257: 241: 237: 214: 210: 187: 184: 181: 177: 156: 153: 150: 147: 144: 141: 138: 135: 113: 109: 101: 97: 92: 90: 86: 82: 78: 74: 70: 66: 65:sparse matrix 63:to permute a 62: 58: 54: 50: 46: 37: 29: 19: 833: 824: 810: 797: 791: 754: 562: 402: 333: 307: 304: 263: 93: 84: 80: 52: 48: 42: 876:written in 73:band matrix 67:that has a 888:Categories 784:References 651:∖ 632:⁡ 429:… 403:Then for 275:× 260:Algorithm 77:bandwidth 69:symmetric 61:algorithm 850:for the 767:See also 362:and set 300:vertices 704:Append 89:fill-in 878:Cython 864:symrcm 534:(with 340:degree 310:-tuple 100:levels 79:. The 47:, the 874:SciPy 670:Sort 296:graph 294:of a 561:the 462:< 128:for 803:ACM 629:Adj 507:of 85:RCM 43:In 890:: 626::= 400:. 373::= 342:) 53:CM 880:. 860:. 854:. 818:. 751:. 739:R 717:i 713:A 701:. 683:i 679:A 654:R 648:) 643:i 639:R 635:( 621:i 617:A 593:R 573:R 563:i 547:i 543:R 520:i 516:R 493:i 489:A 465:n 458:| 454:R 450:| 426:, 423:2 420:, 417:1 414:= 411:i 388:) 385:} 382:x 379:{ 376:( 370:R 350:x 319:R 308:n 278:n 272:n 242:i 238:R 215:i 211:R 188:1 185:+ 182:i 178:R 157:. 154:. 151:, 148:2 145:, 142:1 139:= 136:i 114:i 110:R 83:( 51:( 20:)

Index

Reverse Cuthill–McKee algorithm


numerical linear algebra
Elizabeth Cuthill
algorithm
sparse matrix
symmetric
band matrix
bandwidth
fill-in
breadth-first search
levels
adjacency matrix
graph
vertices
n-tuple
peripheral vertex
degree
vertex degree
level structure
breadth-first search
Graph bandwidth
Sparse matrix
Reducing the bandwidth of sparse symmetric matrices
ACM
"Ciprian Zavoianu - weblog: Tutorial: Bandwidth reduction - The CutHill-McKee Algorithm"

Cuthill–McKee documentation
Boost C++ Libraries

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.