SUBROUTINE SEARCH(M, DMD, D, K, ITER, ALPHA, DMWORK, DMWRK1, * WORK1, DMWRK2, WORK2, IWORK, OUNIT) C C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> C C PURPOSE C ------- C C PRODUCES AND OUTPUTS TREE WHICH MAXIMIZES ALPHA*TRUE - C (1.0-ALPHA)*FALSE WHERE TRUE IS THE NUMBER OF TRIADS CORRECTLY C PREDICTED BY THE TREE AND FALSE IS THE NUMBER OF TRIADS C INCORRECTLY PREDICTED BY THE TREE AND ALPHA IS A USER-DEFINED C PROBABILITY C C DESCRIPTION C ----------- C C 1. A TRIAD IS A SEQUENCE OF THREE OBSERVATIONS. (IJ)K IS A LEGAL C TRIAD IF THE DISTANCE BETWEEN OBJECTS I AND J IS SMALLER THAN C THE DISTANCE BETWEEN OBJECTS I AND K AND THE DISTANCE BETWEEN C OBJECTS J AND K. C C 2. THE ROUTINE LOOPS FOR A USER-DEFINED NUMBER OF ITERATIONS. FOR C THE FIRST LOOP, THE FIRST TREE CONSISTS OF THE FIRST TWO C OBJECTS. THE THIRD OBJECT IS ADDED IN ALL PLACES IN THE TREE C AND THE TRIADS DICTATED BY THE TREE ARE FORMED. THE LOCATION C IN THE TREE WHICH PREDICTS THE MOST TRUE TRIADS IS RETAINED. C ALL OTHER OBJECTS ARE ADDED SIMILARLY TO COMPLETE THE TREE. C ALL SUBSEQUENT LOOPS START WITH THE TREE FROM THE PREVIOUS LOOP C AND MOVE EACH OBJECT IN TURN TO EACH LOCATION IN THE TREE C PLACING THE OBJECT IN THE LOCATION THAT PREDICTS THE MOST TRUE C TRIADS. C C 3. AFTER EACH ITERATION, EACH NODE IN THE TREE IS PRINTED ALONG C WITH ITS ANCESTOR AND THE NUMBER OF TRUE AND FALSE TRIADS C PREDICTED WHICH CONTAIN THAT NODE. THEN THE TREE IS PRINTED C OUT ON FORTRAN UNIT OUNIT AS MATRIX OF INTEGERS. EACH COLUMN C IN THE MATRIX CORRESPONDS TO THE OBJECT WHOSE NUMBER IS THE C FIRST ENTRY IN THE COLUMN. THE SECOND NUMBER IN EACH COLUMN IS C THE ANCESTOR NODE OF THE OBJECT, THE THIRD NUMBER IS THE C ANCESTOR NODE OF THE SECOND NUMBER, ETC. THE FINAL TREE CAN BE C RECOVERED BY CONNECTING EACH NODE TO ITS ANCESTOR AND LINKING C THE ANCESTORS TO THEIR ANCESTORS UNTIL ONLY ONE NODE IS LEFT. C C 4. EVALUATING ALL POSSIBLE TRIADS IS EXTREMELY EXPENSIVE AND THE C SUBROUTINE SHOULD ONLY BE RUN ON NO MORE THAN ABOUT 15 OBJECTS. C ALSO THE NUMBER OF ITERATIONS SHOULD BE NO MORE THAN 5. C C INPUT PARAMETERS C ---------------- C C M INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE NUMBER OF OBJECTS. C C DMD INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE LEADING DIMENSION OF THE MATRIX D. MUST BE AT LEAST M. C C D REAL MATRIX WHOSE FIRST DIMENSION MUST BE DMD AND SECOND C DIMENSION MUST BE AT LEAST M (UNCHANGED ON OUTPUT). C D(I,J) IS THE DISTANCE FROM OBJECT I TO OBJECT J. C C K INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE NUMBER OF NODES OF THE TREE, MUST BE GREATER THAN M BUT C SHOULD BE NO GREATER THAN 2*M. C C ITER INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE NUMBER OF ITERATIONS. C C ALPHA REAL SCALAR (UNCHANGED ON OUTPUT). C THE WEIGHT IN THE MAXIMIZATION EQUATION. C C 0. <= ALPHA <= 1. C C DMWORK INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE FIRST DIMENSION OF THE MATRIX WORK1. MUST BE AT LEAST M. C C DMWRK1 INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE SECOND DIMENSION OF THE MATRIX WORK1. MUST BE AT LEAST M. C C WORK1 REAL MATRIX WHOSE FIRST DIMENSION MUST BE DMWORK, WHOSE SECOND C DIMENSION MUST BE AT DMWRK1, AND WHOSE THIRD DIMENSION MUST C BE AT LEAST M. C WORK MATRIX. C C DMWRK2 INTEGER SCALAR (UNCHANGED ON OUTPUT). C THE FIRST DIMENSION OF THE MATRIX WORK2. MUST BE AT LEAST M. C C WORK2 REAL MATRIX WHOSE FIRST DIMENSION MUST BE DMWRK2 AND SECOND C DIMENSION MUST BE AT LEAST M. C WORK MATRIX. C C IWORK INTEGER VECTOR DIMENSIONED AT LEAST M+K. C WORK VECTOR. C C OUNIT INTEGER SCALAR (UNCHANGED ON OUTPUT). C UNIT NUMBER FOR OUTPUT. C C REFERENCE C --------- C C HARTIGAN, J. A. (1975). CLUSTERING ALGORITHMS, JOHN WILEY & C SONS, INC., NEW YORK. PAGES 177-188. C C<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><> C