KR100920966B1 - 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체 - Google Patents

인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체 Download PDF

Info

Publication number
KR100920966B1
KR100920966B1 KR1020080009211A KR20080009211A KR100920966B1 KR 100920966 B1 KR100920966 B1 KR 100920966B1 KR 1020080009211 A KR1020080009211 A KR 1020080009211A KR 20080009211 A KR20080009211 A KR 20080009211A KR 100920966 B1 KR100920966 B1 KR 100920966B1
Authority
KR
South Korea
Prior art keywords
node
matrix
function
path matrix
nodes
Prior art date
Application number
KR1020080009211A
Other languages
English (en)
Other versions
KR20090083198A (ko
Inventor
노경태
이창준
조광휘
박재성
이성광
Original Assignee
연세대학교 산학협력단
사단법인 분자설계연구소
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 연세대학교 산학협력단, 사단법인 분자설계연구소, 숭실대학교산학협력단 filed Critical 연세대학교 산학협력단
Priority to KR1020080009211A priority Critical patent/KR100920966B1/ko
Publication of KR20090083198A publication Critical patent/KR20090083198A/ko
Application granted granted Critical
Publication of KR100920966B1 publication Critical patent/KR100920966B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Abstract

본 발명은 인접행렬을 이용하여 각 노드 간의 연결 관계를 파악하는 기법에 관한 것으로, 구체적으로는, 최소 길이의 폐구간을 이루는 노드들을 찾는 기법 및 그 기법에 따른 프로그램을 제안하는 것이다.
본 발명에 따른 기법은, 컴퓨터로 하여금 인접 행렬에 대한 거듭 제곱을 하여 가장 먼 원소를 찾고, 이후 거듭 제곱의 횟수를 감소시키며 SSSR에 속하는 원소를 찾도록 하는 방법을 제안한다. 보다 구체적으로, 본 발명은 i) 찾으려는 최소 링의 길이에 상응하는 횟수만큼 인접행렬을 거듭제곱하여 n차 행렬을 생성하고, ii) n차 행렬을 이용하여 시작점에서 가장 먼 원소를 파악하며, iii) n차 행렬의 지수를 순차적으로 감소시키며 시작점과 가장 먼 원소 사이에 있는 원소들을 파악하는 기능을 실현하기 위한 프로그램을 제공한다.
본 발명을 이용하는 경우, 빠른 속도로 정확하게 SSSR을 찾을 수 있는 장점이 있다.
인접행렬, 최소 링, SSSR, 링 인식, ring perception

Description

인접행렬을 이용하여 최소 길이의 폐구간을 이루는 노드들을 검출하는 프로그램이 저장된 매체{media storing a program of detecting nodes which consist the closed path of the shortest distance using an adjacency matrix}
본 발명은 인접행렬을 이용하여 각 노드 간의 연결 관계를 파악하는 기법에 관한 것으로, 구체적으로는, 최소 길이의 폐구간을 이루는 노드들을 찾는 기법 및 그 기법에 따른 프로그램을 제안하는 것이다.
통신, 교통 체계, 전자회로, 화학 구조 등의 각종 정보는 다수의 노드(node)와 각 노드를 그래프로 연결시킨 하나의 네트워크 개념으로 모델링할 수 있다.
예를 들어, 통신 기술 분야의 경우, 이동 단말, 기지국, 중계국 등의 네트워크 엔터티가 노드의 개념으로 표현되고, 각 네트워크 엔터티 간의 유/무선 인터페이스가 각 노드 간의 연결관계로 표현될 수 있고, 화학 구조의 경우, 하나의 분자를 이루는 각 원자가 노드의 개념으로 표현되고, 각 원자 간에 결합이 있는지 여부에 관한 정보가 각 노드 간의 연결관계로 표현될 수 있다.
상기 네트워크에 존재하는 다수의 노드들 간에 연결 관계를 효율적으로 나타내는 방법 중 하나가 인접행렬을 이용하여 나타내는 방법이다. 이하, 인접행렬에 관하여 설명한다.
인접행렬(adjacency matrix)은 각 노드(node)들 간의 연결 상태를 행렬 형태로 나타내는 것을 말한다. 네트워크 상에 존재하는 노드의 개수가 n개일 때 인접 행렬 A는 n×n의 정사각 행렬 형태를 띠는 것이 일반적이다.
인접행렬 상에 i행(row), j열(column)의 값이 1이면 i와 j에 해당하는 노드가 인접해 있는 것이고, 그 값이 0이면 인접하지 않은 것이다. 예를 들어 3행, 2열의 값이 1이면 3행에 해당하는 노드 C와 2열에 해당하는 노드 B가 인접해 있다는 것을 표현한다.
도 1은 6개의 노드로 표현된 네트워크 일례이고, 도 2는 도 1의 네트워크를 인접행렬로 나타낸 일례이다.
네트워크에 포함되는 노드들이 형성하는 폐구간에 대한 정보를 정확하게 아는 경우, 특정한 네트워크의 구조를 정확하게 파악할 수 있다.
도 1을 보면, A-B-C-F-E가 폐구간(closed path)을 나타내는 것을 알 수 있고, C-F-D, F-D-E 등이 또 다른 폐구간을 나타내는 것을 알 수 있다. 또한, A-B-C-D-E의 경우에도 폐구간을 형성하며, C-F-E-D의 경우에도 하나의 폐구간을 형성한다.
상술한 폐구간 중에서 A-B-C-F-E, C-F-D, F-D-E 폐구간의 정보는 특히 중요하다. 도 1의 네트워크는 상술한 3개의 폐구간으로 구분될 수 있으므로, 상술한 3개의 폐구간의 정보를 아는 경우, 상기 네트워크에서의 노드 간의 연결 관계를 정확하게 알 수 있다.
그러나 상기 A-B-C-D-E 폐구간이나, C-F-E-D 폐구간은, 상술한 C-F-D, F-D-E 폐구간을 그대로 포함하는 폐구간으로서, 상기 A-B-C-D-E 또는 C-F-E-D 폐구간에 대한 정보가 없더라도 도 1의 네트워크의 구조를 파악하는데 문제가 없다.
정리하면, 어떤 네트워크의 구조를 정확하게 알기 위해서는, i) 최소 길이를 갖는 폐구간으로서, ii) 자신보다 좀더 짧은 길이를 갖는 폐구간을 그대로 포함하지 않는 폐구간을 찾아야만 한다.
이하, 상기 i), ii)의 조건을 만족하는 폐구간을 '최소 길이의 폐구간'이라 칭한다. 상기 '최소 길이의 폐구간'은 관련된 기술 분야에 따라 다양한 명칭으로 불린다. 예를 들어, 컴퓨터 공학 및 화학 분야에서는 이러한 '최소 길이의 폐구간'을 이루는 노드들의 집합을 SSSR(Smallest Set of Smallest Rings)이라 칭하고, 이러한 SSSR을 찾는 일련의 과정을 '링 인식'(ring perception)이라 칭해왔다.
예를 들어, 도 1의 경우에는, [C, D, F], [D, E, F], [A, B, C, E, F] 등이 하나의 SSSR, 즉 최소 길이의 폐구간을 이루는 노드들의 집합으로 정리될 수 있다.
종래에는 SSSR, 즉 최소 길이의 폐구간을 이루는 노드들의 집합들을 효율적으로 찾기 위해 Plotkin, Figuera, Bersohn, Esack, Zamora, Gbaumer 등의 다양한 기법 등이 제안되었다.
종래에 제안된 최소 길이의 폐구간을 이루는 노드들을 찾는 기법은 특정한 구조를 갖는 네트워크 구조에 대해서는 완전하게 최소 길이의 폐구간을 찾지 못하는 문제가 있었다.
또한, 종래의 기법은 특정한 구조를 갖는 네트워크에 대해서 최소 길이의 폐구간을 찾는데 지나치게 오랜 시간이 소요되는 문제가 있었다.
본 발명은 상술한 종래 기술의 문제점을 해결하기 위해 제안된 것으로, 본 발명의 목적은, 다양한 네트워크 구조에 대하여 최소 길이의 폐구간을 완전하게 찾는 기법을 제안하는 것이다.
본 발명의 또 다른 목적은 빠른 속도로 최소 길이의 폐구간을 완전하게 찾는 기법을 제안하는 것이다.
본 발명은 상술한 목적을 달성하기 위해, 컴퓨터에 네트워크 상에 위치하는 노드(node)들의 연결 관계를 나타내는 인접행렬을 획득하는 제1 기능; 소정의 최소 길이의 폐구간을 이루는 노드들을 검출하기 위하여, 상기 최소 길이에 상응하는 최대 지수(exponent)만큼 상기 인접행렬을 거듭 제곱하여 최대지수 경로행렬을 산출하는 제2 기능; 상기 최대지수 경로행렬 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 적어도 하나의 경로행렬을 이용하여 소정의 제1 노드로부터 가장 이격된 제2 노드를 탐색하는 제3 기능; 상기 최대지수 경로행렬의 지수를 순차적으로 감소시켜 산출한 적어도 하나의 경로행렬을 이용하여, 상기 제1 노드에서 상기 제2 노드 방향으로 상기 제1 노드 및 상기 제2 노드 사이에 위치하는 적어도 하나의 노드를 순차적으로 검출하는 제4 기능; 및 상기 제1 노드, 상기 제2 노드 및 상기 제4 기능에 의해 검출된 노드를, 최소 길이의 폐구간을 이루는 하나의 노드 집합으로 그룹화(grouping)하는 제5 기능을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체를 제안한다.
본 발명의 또 다른 일 양상에 따른 매체는, 네트워크 상에 위치하는 노드(node)들의 연결 관계를 나타내는 인접행렬을 획득하는 제1 단계; 상기 인접행렬의 모서리(edge) 및 꼭지점(vertex)의 개수를 이용하여, 상기 인접행렬에서 검출 가능한 최소 길이의 폐구간의 개수를 산출하는 제2 단계; 상기 폐구간의 길이를 순차적으로 증가시키기 위한 제1 카운터를 초기화 시키는 제3 단계; 상기 제1 카운터에 상응하는 길이의 폐구간을 이루는 노드들을 검출하기 위하여, 상기 제1 카운터에 상응하는 최대 지수(exponent)만큼 상기 인접행렬을 거듭 제곱하여 최대지수 경로행렬을 산출하는 제4 단계; 상기 최대지수 경로행렬 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 적어도 하나의 경로행렬을 이용하여 소정의 제1 노드로부터 가장 이격된 제2 노드를 탐색하는 제5 단계; 상기 제1 노드 및 제2 노드 사이에 위치하는 노드를 검출하기 위한 제2 카운터를 초기화시키는 제6 단계; 상기 최대지수 경로행렬에 비해 지수가 상기 제2 카운터만큼 감소하는 중간 경로행렬을 산출하는 제7 단계; 상기 중간 경로행렬을 이용하여, 상기 제1 노드에서 상기 제2 노드 방향으로 상기 제1 노드에서 상기 제2 카운터에 상응하는 거리만큼 이격된 적어 도 하나의 노드를 순차적으로 검출하는 제8 단계; 상기 제1 노드 및 상기 제2 노드 사이에 위치하는 노드가 모두 검출될 때까지, 상기 제2 카운터를 증가시키면서 상기 제7 단계 및 상기 제8 단계를 반복 수행하는 제9 단계; 상기 제1 노드, 상기 제2 노드 및 상기 검출된 노드를, 최소 길이의 폐구간을 이루는 하나의 노드 집합으로 그룹화(grouping)하는 제10 단계; 상기 제10 단계에 의해 그룹화된 노드 집합의 개수가 상기 제2 단계에 의한 검출 가능한 최소 길이의 폐구간의 개수와 일치할 때까지, 상기 제1 카운터를 증가시키면서 상기 제4 단계 내지 상기 제10 단계를 반복 수행하는 제11 단계 를 실행시키는 특징이 있다.
본 발명에 따른 기법을 사용하여 최소 길이의 폐구간을 이루는 노드들의 집합을 찾는 경우에는 다음과 같은 장점이 있다.
우선, 종래에는 그 구조를 정확하게 찾지 못한 네트워크에 대해서도, 그 구조를 정확하게 찾을 수 있다.
또한, 종래에는 그 구조를 파악하는데 오랜 시간이 소요된 네트워크에 대해서도, 빠른 속도로 구조를 파악할 수 있다.
본 발명은 다양한 형상의 네트워크의 구조를 분석하기 위하여, 네트워크를 이루는 각 노드들의 연결관계를 효율적으로 파악하는 기법을 제공한다.
상술한 네트워크의 종류에는 제한이 없으며, 본 발명이 적용되는 네트워크는 예를 들어, 통신 시스템, 교통 체계, 전자회로, 분자 등일 수 있다. 상기 네트워크는 바람직하게, 복수 개의 노드(node)들로 이루어진다. 상기 노드(node)는, 네트워크의 종류에 따라, 이동 단말, 기지국, 중계국, 이동 수단, 회로 소자, 분자를 이루는 원자 등의 다양한 엔터티(entity)일 수 있다.
본 발명은 다양한 구조의 네트워크에 대하여 '최소 길이의 폐구간'을 이루는 노드들의 집합을 효율적으로 찾는 기법을 제공한다. 상기 '최소 길이의 폐구간'은 '링(ring)' 또는 '최소 링(Smallest Ring)' 등의 다양한 표현으로 불리며, 상기 '최소 길이의 폐구간'을 이루는 노드들의 집합은, 'SSSR(Smallest Set of Smallest Rings)' 등의 다양한 표현으로 불린다.
이하에서는 설명의 편의를 위해, '최소 길이의 폐구간'을 '최소 링(Smallest Ring)'이라 칭하고, 상기 '최소 길이의 폐구간'을 이루는 노드들의 집합은 SSSR이라 칭한다.
비록 '최소 링(Smallest Ring)' 또는 'SSSR'이라는 표현이 특정한 기술 분야(예를 들어, 컴퓨터 공학, 화학 공학)에서 선호되는 표현이라 할지라도, 이는 설명의 편의를 위해 선택된 용어에 불과하므로, 본 발명이 노드로 이루어진 모든 종류의 네트워크 상에서 최소 길이를 갖는 폐구간을 찾는데 사용될 수 있음은 자명하다 할 것이다.
본 발명의 구체적인 동작 및 특징은 이하에서 설명하는 본 발명의 바람직한 실시예에 의해 더욱 구체화될 것이다. 이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
본 발명에 따른 기법은 다양한 방법과 함께 사용되거나, 컴퓨터와 같은 다양한 장치를 통해 구현되는 것이 바람직하다. 이하, 설명의 편의를 위해 본 발명에 따른 기법이 컴퓨터에서 실행되는 소프트웨어의 형태로 구현되는 일례를 설명한다.
도 3은 본 발명에 따른 기법을 실행하는 컴퓨터의 일례를 나타내는 블록도이다. 본 실시예가 수행되는 컴퓨터는 버스(106)로 연결된 중앙처리장치(CPU)(101), 메모리(102), 표시장치(103), 입력장치(104) 및 외부기억수단(105)을 구비한다.
보다 구체적으로, 이 컴퓨터는 워크스테이션, 퍼스널컴퓨터 또는 그 밖의 컴퓨터 시스템일 수 있다. 상기 외부기억수단(105)으로서는, 예를 들면, 자기디스크, 반도체 메모리 또는 그 밖의 일반적인 기억매체가 사용될 수 있다. 바람직하게, 상기 컴퓨터에서, 본 실시예에 따른 기법의 내용을 포함하는 컴퓨터 프로그램은 외부기억수단(105)에 저장된다. 조작자가 입력장치(104)로부터 프로그램 실행의 지시를 입력할 경우, CPU(101)는 외부기억수단(105)으로부터 프로그램을 메모리(102)로 로드(load)한다.
바람직하게, 조작자는, 예컨대 입력장치(104)로부터 프로그램 실행을 위한 데이터(예를 들어, 상술한 '인접행렬' 등)를 입력시킴으로써 메모리(102)에 프로그램 실행을 위한 데이터(예를 들어, '인접행렬')를 준비한다. 상술한 데이터는 외부기억수단(105)에 미리 저장되어 메모리(102)에 로드(load)되는 것도 가능하다. CPU(101)는 메모리(102)에 로드된 프로그램에 따라 상기 데이터를 이용하여 소정의 연산을 수행한다.
바람직하게, 상기 CPU(101)는 본 실시예에 따른 기법의 프로그램의 결과 데 이터를 상기 표시장치(103) 상에 표시한다.
도 4는 본 실시예에 따라 'SSSR'을 찾는 과정을 나타낸 절차흐름도의 일례이다. 본 실시예에 따른 컴퓨터는 도 4에 도시된 과정에 따라 'SSSR'을 찾는 것이 바람직하다.
도시된 바와 같이, 인접행렬을 획득하는 단계(S401), 상기 인접행렬에서 검출 가능한 최소 길이의 폐구간의 개수를 산출하는 단계(S402), 최대 지수(exponent)만큼 상기 인접행렬을 거듭 제곱하여 최대차수 경로행렬을 산출하는 단계(S403), 소정의 제1 노드로부터 가장 이격된 제2 노드를 탐색하는 단계(S404), 상기 최대차수 경로행렬보다 지수가 감소한 중간 경로행렬을 산출하고, 상기 중간 경로행렬을 이용하여, 상기 제1 노드에서 상기 제2 노드 방향으로 이격된 적어도 하나의 노드를 순차적으로 검출하는 단계(S405), S405 단계를 통해 최소 링을 이루는 모든 노드를 찾았는지를 판단하는 단계(S406), 검출된 노드들을 최소 링으로 그룹화(grouping)하는 단계(S407), 특정한 네트워크에 대해 찾을 수 있는 모든 최소 링을 찾았는지 여부를 판단하는 단계(S408)를 포함한다. 만약, 모든 최소 링을 찾지 않았다면 상기 최대지수를 증가시켜 상기 S403 단계를 반복수행한다.
도 4의 단계는 본 발명의 일례이므로, 도시된 각각의 단계들은 서로 분리되어 수행되거나, 함께 수행되거나, 도시된 순서와 다르게 수행될 수 있다. 또한, 조작자의 필요에 따라 일부 단계를 생략하거나, 부가적인 단계를 추가할 수 있다.
이하, 도 4의 절차흐름도를 기준으로 본 실시예를 설명한다.
제1 단계(S401):
조작자는 상기 입력장치(104) 또는 외부기억수단(105) 등을 이용하여 컴퓨터에 인접행렬(A)을 입력시킨다. 인접행렬(A)은 다양한 측정 방법에 의해 미리 구해지는 것이 바람직하다.
이하, 상기 S401 단계에 의해 입력되는 행렬의 특징에 관하여 설명한다.
도 5는 6개의 노드(V1 내지 V6)를 갖는 네트워크의 일례이다. 도 5의 네트워크는 하기 수학식 1과 같은 인접행렬로 모델링된다.
Figure 112008007588257-pat00001
상기 인접행렬의 성분은, 해당 성분에 상응하는 2 개의 노드 간의 연결관계를 나타낸다.
상기 수학식 1의 (1, 2) 성분, 즉 첫 번째 행(row) 및 두 번째 열(column)에 위치하는 '1'은, 'V1 노드'와 'V2 노드'가 거리가 '1' 만큼 떨어져 있음을 의미한다. 도 5의 인접행렬에는 방향성이 없으므로, 특정한 제A 노드에서 제B 노드로 연결된 경우, 상기 제2 노드에서 상기 제2 노드로도 연결된다. 따라서, 상기 수학식 1의 행렬은 대각성분(diagonal)을 중심으로 대칭한다.
상기 인접행렬(A)을 소정의 횟수만큼 거듭제곱하는 경우, 거듭제곱하는 횟수에 따라 다양한 행렬을 얻을 수 있다. 상기 인접행렬(A)이 수회 반복해서 곱해지는 경우, 각 노드 간의 경로에 대한 정보를 제공한다. 따라서, 수회 거듭 곱해진 인접행렬들은 경로행렬(path matrix)로도 부를 수 있다.
상기 인접행렬(A)이 거듭 곱해지는 회수, 즉 지수(exponent)를 이용하여 상기 경로행렬을 표시할 수 있다. 예를 들어, 상기 인접행렬(A)이 2번 곱해지는 경우, A2(2nd power of A) 또는 제2차 경로행렬이라 칭할 수 있다.
이하, 인접행렬(A)이 수회 반복해서 곱해지는 경우, 해당 행렬로부터 제공되는 정보를 설명한다.
하기 수학식 2는 A보다 지수가 '1' 만큼 증가한 A2 행렬을 나타낸 것이고, 하기 수학식 3은 A보다 지수가 '2' 만큼 증가한 A3 행렬을 나타낸 것이다.
Figure 112008007588257-pat00002
Figure 112008007588257-pat00003
수학식 2의 행렬, 즉 제2차 경로행렬(A2)은 임의의 제A 노드에서 제B 노드까지 거리가 '2' 만큼 떨어진 경로(path)가 몇 개 존재하는 지를 나타낸다. 또한, 수학식 3의 행렬, 즉 제3차 경로행렬(A3)은 임의의 제A 노드에서 제B 노드까지 거리가 '3' 만큼 떨어진 경로(path)가 몇 개 존재하는 지를 나타낸다.
도 6은 인접행렬 및 n차 경로행렬을 이용하여, 노드 간의 정보를 분석하는 방법을 나타낸다.
도 6을 보면, V1 노드와 V2 노드가 거리 '1' 만큼의 간격을 두고 붙어 있는 것을 알 수 있으며, 이는 수학식 1의 인접행렬(A)의 (1,2) 성분 또는 (2,1) 성분에 '1' 값이 존재함을 통해서도 확인할 수 있다.
도 6을 보면, V1 노드와 V6 노드는 거리 '3'을 갖는 경로를 통해서도 연결되어 있다. 예를 들어, V1 노드와 V6 노드는 V6-V5-V6-V1의 경로를 통해 연결되는데 이 경로의 길이는 '3'이다. 거리 '3'을 가지며, V1 노드와 V2 노드를 연결하는 경로는 총3개(V6-V5-V6-V1, V6-V1-V6-V1, V6-V1-V2-V1) 존재하는데, 이는 상기 수학식 3의 행렬, 즉 제3차 경로행렬(A3)을 통해 확인할 수 있다. 상기 제3차 경로행렬(A3)의 (1, 2) 성분 또는 (2, 1) 성분에는 '3'의 값이 존재하므로, 해당 경로가 '3' 개 존재함을 확인할 수 있다.
정리하면, 경로행렬의 지수(exponent)는 경로의 '거리'에 상응하며, 경로행렬의 성분 자체는 존재하는 경로의 '개수'에 상응한다.
상기 수학식 2의 행렬, 즉 제2차 경로행렬(A2)을 보면, (1, 2) 성분 또는 (2,1) 성분의 값이 '0'이며, 이를 통해, 거리 '2' 를 가지며 V1과 V2를 연결하는 경로의 개수가 '0'개 존재함을 알 수 있다.
제2 단계(S402):
상기 인접행렬(A)을 이용하면 검출 가능한 최소 링의 개수를 계산할 수 있다.
최소 링의 개수= E-V+1
상기 수학식 3에서, 'E'는 인접행렬의 모서리(edge)의 개수이고, 'V'는 꼭지점(vertex)의 개수이다. 인접행렬의 모서리 및 꼭지점을 이용하여 최소 링의 개수를 산출하는 방법은 이미 공지된 내용으로서, 상기 수학식 4에 의할 수 있다. 상기 수학식 4를 통해 특정한 네트워크에 대해 찾을 수 있는 최소 링의 개수가 산출된다.
바람직하게, 상기 제2 단계(S402)를 수행하기 이전에 개방된 비환식 노드(open acyclic node)를 제거하는 동작이 수행된다. 즉, 어느 하나의 노드에만 연결된 경로가 존재하는 경우, 해당 경로를 제거하는 데이터 처리가 상기 제2 단계(S402) 수행 이전에 수행되는 것이 바람직하다. 즉, 상기 'E' 값과 'V' 값은 개방된 비환식 노드(open acyclic node)를 제거하는 동작이 수행된 이후 얻어지는 값이다.
제3 단계(S403) 및 제4 단계(S404):
상기 제2 단계(S402)를 통하여 최소 링의 개수가 산출된다. 이하의 단계에서는 소정의 최소 길이를 갖는 최소 링을 찾는 방법을 설명한다. 바람직하게, 상기 최소 길이의 초기값은 '3'이고, 이후 상기 최소 길이를 '4', '5', '6' 순으로 증가시킬 수 있다.
본 실시예는 i) 우선 임의의 시작 노드(이하, '제1 노드'라 칭함)을 정하고, ii) 상기 제1 노드에서 가장 이격된 노드(이하, '제2 노드'라 칭함)를 탐색한 후, iii) 상기 제1 노드 및 제2 노드 사이에 존재하는 나머지 노드들을 검출하는 기법을 사용한다.
우선, 특정한 노드로부터 가장 이격된 노드를 찾는 방법에 대하여 설명한다.
도 7a는 짝수 길이를 갖는 최소 링의 일례이고, 도 7b는 홀수 길이를 갖는 최소 링의 일례이다. 도 7a 또는 도 7b의 도시된 링은 주어진 인접행렬(A)을 통해 최종적으로 검출해 내야할 목적이 되므로, 조작자는 도 7a 또는 도 7b의 구조를 모르는 상태에서 본 실시예를 수행하게 된다.
우선 짝수 길이의 최소 링을 찾는 방법을 설명한다.
제1 단계(S401)를 통해 획득한 인접행렬(A) 내에 도 7a의 첫 번째의 링과 같이 길이 '4'를 갖는 최소 링이 존재하는지 여부를 찾는 경우, 우선 도시된 'A 노드'를 임의의 제1 노드로 정할 수 있다. 이 경우, 상기 제3 단계(S403)를 통해 'A 노드'에서 가장 이격된 노드가 'B 노드'라는 것을 검출하고, 이를 통해 길이 '4'의 최소 링이 존재하는 것을 확인할 수 있어야 한다.
최소 링의 길이가 'n'인 경우, 도시된 바와 같이, 제1 노드와 제2 노드는 'n/2' 만큼 이격된다. 즉, 도 7a의 첫 번째 링처럼 길이 '4'를 갖는 사각 링인 경우, 제1 노드와 제2 노드는 길이 '2' 만큼 이격되고, 도 7a의 두 번째 링처럼 길이 '6'을 갖는 링인 경우, 제1 노드와 제2 노드는 길이 '3' 만큼 이격된다.
따라서, 도 7a의 첫 번째 링을 나타내는 인접행렬(A1)이 존재하는 경우, 제2차 경로행렬(A1 2)에는 반드시 영이 아닌 성분(non-zero) 성분이 존재할 것이다. 또한, 도 7a의 두 번째 링을 나타내는 인접행렬(A2)이 존재하는 경우, 제3차 경로행렬(A2 3)에는 반드시 영이 아닌 성분(non-zero) 성분이 존재할 것이다.
추가적으로, 제1 노드와 제2 노드는 반드시 2개 이상의 경로를 통해 연결될 것이다. 즉, 도 7a의 첫 번째 링과 같이 길이 '4'를 갖는 사각 링인 경우, 제1 노드와 제2 노드는 제1 방향으로 '2' 만큼 이격되는 동시에, 제2 방향으로도 '2' 만큼 이격된다. 또한, 도 7a의 두 번째 링과 같이 길이 '6'을 갖는 사각 링인 경우, 제1 노드와 제2 노드는 제1 방향으로 '3' 만큼 이격되는 동시에, 제2 방향으로도 '3' 만큼 이격된다.
따라서, 도 7a의 첫 번째 링을 나타내는 인접행렬(A1)이 존재하는 경우, 제2차 경로행렬(A1 2)에는 반드시 '2' 이상의 성분이 존재할 것임을 알 수 있다. 또한, 도 7a의 두 번째 링을 나타내는 인접행렬(A2)이 존재하는 경우, 제3차 경로행 렬(A2 3)에는 반드시 '2' 이상의 성분이 존재할 것임을 알 수 있다.
위의 내용을 정리하면, 다음과 같은 원칙을 얻을 수 있다. 만약 짝수 길이(n)의 최소 링이 존재한다면 반드시 인접행렬(A)을 (n/2)번 거듭제곱한 경로행렬(A(n/2)) 상에서 '2' 이상의 성분이 존재할 것이다.
예를 들어, 임의로 주어진 인접행렬(A)을 (n/2)번 거듭제곱한 경로행렬(A(n/2)) 상에서 '2' 이상의 성분이 특정한 위치, 예를 들어 (3, 4) 위치에서 발견된다면, 이는 3번째 행(row)에 상응하는 V3 노드와 4번째 열(column)에 상응하는 V4 노드가 서로 가장 이격된 노드라고 판단할 수 있다. 즉, 상기 V3 노드가 제1 노드이고, 상기 V4 노드가 제2 노드라는 것을 판단할 수 있다.
따라서, 짝수 길이(n)의 최소 링 상에서 소정의 제1 노드 및 상기 제1 노드로부터 가장 이격된 제2 노드를 찾기 위해서는, 우선 최대 지수(m)만큼 인접행렬을 거듭제곱하여 최대지수 경로행렬(Am)을 산출해야 한다(S403). 이후, 상기 최대지수 경로행렬(Am)에 '2' 이상의 성분이 존재하는지 여부를 파악하여 상기 제1 노드 및 제2 노드를 탐색한다(S404).
상기 최대 지수(m)는 최대지수 경로행렬의 지수를 나타내는 수치로서, 짝수 길이의 최소 링을 찾는 경우, 상기 최대 지수(m) 및 최소 링의 길이(n) 사이에는 다음과 같은 관계가 성립한다.
Figure 112008007588257-pat00004
좀더 정확한 검출을 위해서는 A(n/2)행렬 이외에도, A(n/2)보다 지수(exponent)가 낮은 모든 경로행렬도 함께 이용하는 것이 바람직하다. 즉, A(n/2) 행렬보다 지수가 낮은 경로행렬에서 계속 '0' 성분을 갖고, A(n/2) 행렬에서 비로소 '2' 이상의 성분을 갖는 경우에 상기 제1 노드 및 제2 노드를 정확하게 탐색할 수 있다. 상기 제1 노드 및 상기 제2 노드는 n/2 미만의 거리를 갖는 경로를 통해 연결될 수 없기 때문에, A(n/2) 행렬보다 지수가 낮은 경로행렬에서는 계속 '0' 성분을 갖는다.
정리하면, 짝수 길이의 최소 링을 찾는 경우, 제3 단계(S403) 및 제4 단계(S404)를 수행하기 위해서는, 최대지수 경로행렬(Am)을 구하여 '2' 이상의 성분이 존재하는 적어도 하나의 제1 위치를 파악하는 동시에, 상기 최대지수 경로행렬(Am)보다 낮은 지수를 갖는 경로행렬(Am-1, Am-2, Am-3,..., A2, A1)의 상기 제1 위치에 '0' 성분이 존재하는 지를 파악하는 것이 바람직하다.
이하, 홀수 길이의 최소 링을 찾는 방법을 설명한다. 설명의 불필요한 중복을 피하기 위해, 대응되는 내용에 관한 설명은 생략한다.
홀수 길이의 최소 링의 경우, 짝수 길이의 최소 링과 다르게, 특정한 제1 노 드에서 가장 이격된 노드가 2개 존재한다. 즉, 도 7b에 도시된 바와 같이, 'A 노드'에서 가장 이격된 노드는 'B 노드' 또는 'C 노드'가 된다.
그러나 가장 이격된 노드를 어떤 노드로 하더라도, 본 실시예에 따라 노드를 검출해 나가면 동일한 결론에 이르기 때문에, 가장 이격된 노드는 두 개의 노드 중 어느 하나로 임의로 결정된다.
도 7b의 첫 번째 링의 경우, 다음과 같은 특징이 발견된다. 도시된 바와 같이, 임의의 제1 노드인 'A 노드'에서 제1 방향으로 '1' 만큼의 거리를 갖는 지점에 'B 노드'가 존재한다. 또한, 상기 'B 노드'는 'A 노드'로부터 제2 방향으로 '2' 만큼의 거리를 갖는다.
도 7b의 두 번째 링의 경우, 다음과 같은 특징이 발견된다. 도시된 바와 같이, 임의의 'A 노드'에서 제1 방향으로 '2' 만큼의 거리를 갖는 지점에 'B 노드'가 존재한다. 또한, 상기 'B 노드'는 'A 노드'로부터 제2 방향으로 '3' 만큼의 거리를 갖는다. 즉 가장 이격된 두 노드 간의 거리는 서로 다른 두 개의 값으로 측정된다.
도 7b와 같이 홀수 길이의 링에 관한 특징을 일반화시키면 다음과 같다.
만약 특정한 네트워크 내에 홀수 길이(n)의 최소 링이 존재한다면, 인접행렬(A)을 1번 내지 (n-3)/2번 거듭제곱한 경로행렬의 제1 위치에 '0'이 존재하고, 인접행렬(A)을 (n-1)/2번 거듭제곱한 경로행렬의 제1 위치에 '1'이 존재하는 동시에, 상기 인접행렬(A)을 (n+1)/2번 거듭제곱한 경로행렬의 상기 제1 위치에 '1' 이상의 성분이 존재하게 된다.
따라서, 홀수 길이(n)의 최소 링 상에서 소정의 제1 노드 및 상기 제1 노드 로부터 가장 이격된 제2 노드를 찾기 위해서는, 우선 최대 지수(m)를 정하고, A1 행렬 내지 Am 행렬을 산출하고, 산출된 경로행렬들(A1 내지 Am 행렬)을 이용한다. 보다 구체적으로, A1 내지 Am-2 행렬에서 '0'을 갖고, Am-1 행렬에서 '1'을 갖고, Am 행렬에서 '1' 이상의 값을 갖는 성분에 상응하는 노드들을 찾는다.
상기 최대 지수(m)는 최대지수 경로행렬의 지수를 나타내는 수치로서, 최소 링의 길이(n)가 홀수인 경우, 상기 최대 지수(m)와 최소 링의 길이(n)는 하기 수학식 6에 의한다.
Figure 112008007588257-pat00005
예를 들어, A1 내지 Am-2 행렬의 (2,5) 위치에서 '0'을 갖고, Am-1 행렬의 (2,5) 위치에서 '1'을 갖고, Am 행렬의 (2,5) 위치에서 '1' 이상의 갖는 경우, V2 노드와 V5 노드가 각각 상기 제1 노드 및 제2 노드로 결정된다.
제5 단계(S405):
상술한 제3 및 제4 단계(S404, 405)에 의해 최대지수 경로행렬(Am) 및 상기 최대지수 경로행렬(Am)에 비해 지수가 낮은 경로행렬들 산출하고, 산출된 경로행렬들을 이용하여 상기 제1 노드(시작 노드)와 상기 제1 노드에서 가장 이격된 제2 노 드를 탐색할 수 있다.
상기 제5 단계(S405)는 최소 링에 위치하는 나머지 노드들을 찾기 위해 최대지수 경로행렬(Am) 보다 지수가 낮은 중간 경로행렬(Am-1, Am-2, Am-3,...)을 차례로 산출하고, 상기 중간 경로행렬(Am-1, Am-2, Am-3,...)을 이용하여, 상기 제1 노드에서 제2 노드 방향으로 노드들을 순차적으로 검출한다.
이하, 최소 링의 길이(n)가 짝수인 경우를 설명한다.
도 8a 및 도 8b는, 최소 링의 길이(n)가 짝수인 경우, 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을 검출하는 방법을 설명하는 도면이다. 도 8의 일례는, 길이 '6'의 최소 링을 구하는 과정의 일부에 관한 것이다.
최소 링의 길이를 '6'으로 설정하고, 상기 제1 노드를 도 8a의 'V1 노드'로 설정한 상태에서, 상술한 제4 단계(S404)까지를 완료하면, 'V4 노드'가 제2 노드로 탐색될 것이다.
보다 구체적으로, 최소 링의 길이(n)가 '6'이므로, 상기 수학식 5에 따라 상기 최대 지수(m)는 '3'으로 설정된다. 상술한 바와 같이, A1 내지 A(m-1) 행렬에서 '0' 성분을 갖는 동시에, Am 행렬(m=3)에서 '2' 이상의 성분이 존재하는 위치를 탐색하면 상기 제2 노드를 찾을 수 있다. 도 8a 및 도 8b의 일례의 경우, 상술한 조건을 만족하는 성분은, (1, 4), (2, 5), (3, 6) 위치에서 발견된다. 도 8a 및 도 8b의 일례는 상기 'V1 노드'를 제1 노드로 정한 일례이므로, (1,4)의 위치만이 상 술한 조건을 만족하는 것이 된다. 결국, 'V4 노드'가 제2 노드로 탐색된다.
상기 제1 노드(V1 노드)와 제2 노드(V4 노드) 사이에 존재하는 4 개의 노드들은 아직 검출되지 않았으나, 상기 제5 단계(S405)를 통해 검출된다.
상술한 바와 같이 상기 제5 단계(S405)는 최대지수 경로행렬(Am) 보다 지수가 낮은 중간 경로행렬(Am-1, Am-2, Am-3,...)을 차례로 산출하고, 상기 중간 경로행렬(Am-1, Am-2, Am-3,...)을 이용하여, 상기 제1 노드에서 제2 노드 방향으로 노드들을 순차적으로 검출한다.
도 8b의 경우, 최대지수 경로행렬(A3)에 비해 지수를 순차적으로 감소시킨, 중간 경로행렬(A2, A1)을 사용한다. 보다 구체적으로, 최대지수 경로행렬(A3)보다 지수를 '1' 만큼 감소시킨 중간 경로행렬(A2)를 이용하여, 제1 노드(V1 노드) 주변의 노드들(V2, V6)을 검출한다.
상기 제1 노드(V1 노드) 주변에 위치한 노드들은, i)우선 제1 노드(V1 노드)와의 거리가 '1' 만큼 떨어져 있어야 하고, ii)상기 제2 노드(V4 노드)와의 거리가 '2' 만큼 떨어져 있어야 한다.
상기 제1 노드(V1 노드)와의 거리가 '1' 만큼 떨어진 노드들은, 도 8b의 인접행렬(A)을 통해 알 수 있다. 즉, 도 8b의 802 영역에 해당하는 행(row)을 통해 V1 노드와 거리가 '1' 만큼 떨어진 노드가 존재하는지 알 수 있다.
또한, 제2 노드(V4 노드)와의 거리가 '2' 만큼 떨어진 노드들은, 도 8b의 제2차 경로행렬(A2)을 통해 알 수 있다. 즉, 도 8b의 801 영역에 해당하는 열(column)을 통해 V4 노드와 거리가 '2' 만큼 떨어진 노드가 존재하는지 알 수 있다.
도 8b의 802 영역을 보면, V1에서 거리가 '1' 만큼 떨어진 노드들은 V2, V6 노드가 있음을 알 수 있다. 한편, 도 8b의 801 영역을 보면, 상기 V2, V6 노드들은 모두 V4 노드로부터 거리가 '2' 만큼 떨어진 노드라는 것을 알 수 있다.
정리하면, 상기 인접행렬(A) 및 최대지수 경로행렬(A3)의 지수를 '1' 만큼 감소시킨 중간 경로행렬(A2)를 이용하면, 상기 제1 노드(V1 노드)로부터 '1' 만큼 떨어진 노드(V2 노드, V6 노드)들을 검출할 수 있다.
상술한 바와 같이 최대지수 경로행렬(Am)로부터 지수를 순차적으로 감소시키는 것이 바람직하므로, 이후에는 Am 행렬에 비해 차수를 '2' 만큼 감소시켜 나머지 노드들을 검출한다.
상술한 단계를 통해 V2 노드와 V6 노드를 검출하였으므로, V2 노드와 제2 노드(V4 노드) 사이에 있는 노드들을 검출하고, V6 노드와 제2 노드(V4 노드) 사이에 있는 노드들을 검출한다.
상기 V2 노드와 제2 노드(V4 노드) 사이에 위치한 노드들은, i)우선 V2 노드와의 거리가 '1' 만큼 떨어져 있어야 하고, ii)상기 제2 노드(V4 노드)와의 거리가 '1' 만큼 떨어져 있어야 한다.
상기 V2 노드와의 거리가 '1' 만큼 떨어진 노드들은, 도 8b의 인접행렬(A)을 통해 알 수 있다. 즉, 도b 8의 803 영역에 해당하는 행(row)을 통해 V2 노드와 거리가 '1' 만큼 떨어진 노드가 존재하는지 알 수 있다. 또한, 제2 노드(V4 노드)와의 거리가 '1' 만큼 떨어진 노드들은, 도 8b의 인접행렬(A)을 통해 알 수 있다. 즉, 도 8b의 805 영역에 해당하는 열(column)을 통해 제2 노드(V4 노드)와 거리가 '1' 만큼 떨어진 노드가 존재하는지 알 수 있다.
위의 과정을 통해, V3 노드가 V2 노드와 상기 제2 노드(V4 노드) 사이에 위치함을 알 수 있다.
V6 노드와 상기 제2 노드(V4 노드) 사이에 위치하는 노드는, 도 8b의 804 영역 및 805 영역을 비교하여 검출 할수 있는데, 결국 V5 노드가 검출된다.
상술한 내용을 일반화하여 정리하면 다음과 같다.
초기값이 '1'로 설정되는 카운터(cnt)를 설정하고, 인접행렬(A) 및 최대지수 경로행렬(Am)의 지수를 카운터(cnt) 만큼 감소시킨 제1 중간 경로행렬(Am- cnt)을 이용하면, 제1 노드로부터 카운터(cnt) 만큼 떨어진 노드들을 검출할 수 있다.
상기 카운터를 순차적으로 증가시키면, 상기 제1 노드에서 상기 제2 노드 방향으로 노드들을 검출할 수 있다. 상기 카운터의 최종 값을 최소 링의 길이(n)에 따라 적절하게 조절하면, 상술한 반복 동작을 통해 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을, 상기 제1 노드에서 상기 제2 노드 방향으로 검출할 수 있다.
이하, 최소 링의 길이(n)가 홀수인 경우를 설명한다.
도 9a 및 도 9b는, 최소 링의 길이(n)가 홀수인 경우, 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을 검출하는 방법을 설명하는 도면이다. 도 9a 및 도 9b의 일례는, 길이 '5'의 최소 링을 구하는 과정의 일부에 관한 것이다.
최소 링의 길이(n)를 '5'로 설정하고, 상기 제1 노드를 도 9a의 'V1 노드'로 설정한 상태에서, 상술한 제4 단계(S404)까지를 완료하면, 'V3 노드'가 제2 노드로 탐색될 것이다.
보다 구체적으로, 최소 링의 길이(n)가 '5'인 경우이므로, 상기 수학식 6에 따라 상기 최대 지수(m)는 '3'으로 설정된다. 상술한 바와 같이, Am-1 행렬에서 '1' 성분을 갖는 동시에 Am 행렬(m=3)에서 '1' 이상의 성분이 존재하는 위치를 탐색하면 상기 제2 노드를 찾을 수 있다. 도 9a 및 도 9b의 일례는 상기 'V1 노드'를 제1 노드로 정한 일례이므로, (1,3), (1,4)의 위치만이 상술한 조건을 만족하는 것이 된다. 도 9a 및 도 9b의 일례에서는 'V3 노드'를 상기 제2 노드로 선택한다.
상기 제1 노드(V1 노드)와 제2 노드(V3 노드) 사이에 존재하는 3 개의 노드들은 아직 검출되지 않았으나, 상기 제5 단계(S405)를 통해 검출된다.
상술한 바와 같이 상기 제5 단계(S405)는 최대지수 경로행렬(Am) 보다 지수가 낮은 중간 경로행렬(Am-1, Am-2, Am-3,...)을 차례로 산출하고, 상기 중간 경로행렬(Am-1, Am-2, Am-3,...)을 이용하여, 상기 제1 노드에서 제2 노드 방향으로 노드들을 순차적으로 검출한다.
특히, 최소 링의 길이(n)가 홀수인 경우, 도시된 제1 방향과 제2 방향에 따라 검출하는 것이 바람직하다. 또한, 최소 링의 길이(n)가 홀수인 경우, 상기 제1 노드로부터 상기 제1 방향으로 거리가 '1' 만큼 이격된 제3 노드를 먼저 검출하는 것이 바람직하다. 비록 도시된 제1 방향이 반시계 방향이나, 이는 설명의 편의를 위한 것으로 상기 제1 방향은 자유롭게 결정된다.
도 9b의 경우, 최대지수 경로행렬(A3)에 비해 지수를 순차적으로 감소시킨 중간 경로행렬(A2, A1)을 사용한다. 보다 구체적으로, 최대지수 경로행렬(A3)보다 지수를 '1' 만큼 감소시킨 중간 경로행렬(A2)을 이용하여, 제1 노드(V1 노드) 주변의 제3 노드를 검출한다.
구체적으로 상기 제3 노드는, i) 우선 제1 노드(V1 노드)로부터 '1' 만큼의 거리가 떨어져 있어야 하고, ii)상기 제2 노드(V3 노드)로부터 '2' 만큼의 거리가 떨어져 있어야 한다.
상기 제1 노드(V1 노드)와의 거리가 '1' 만큼 떨어진 노드들은, 도 9b의 인접행렬(A)을 통해 알 수 있다. 또한, 제2 노드(V3 노드)와의 거리가 '2' 만큼 떨어진 노드들은, 도 9b의 제2차 경로행렬(A2)을 통해 알 수 있다. 즉, 도 9b의 901 영역에 해당하는 열(column)을 통해 V3 노드와 거리가 '2' 만큼 떨어진 노드가 존재하는지 알 수 있다. 상술한 방법에 의하면 상기 제3 노드는 'V5 노드'로 결정된다.
상술한 바와 같이 최대지수 경로행렬(Am)로부터 지수를 순차적으로 감소시키는 것이 바람직하므로, 이후에는 Am 행렬에 비해 차수를 '2' 만큼 감소시켜 나머지 노드들을 검출한다.
상술한 단계를 통해 제1 노드, 제2 노드 및 제3 노드에 관한 정보를 파악했으므로, 도시된 제2 방향에 따라 제1 노드(V1 노드)와 제2 노드(V3 노드) 사이에 있는 노드들을 검출하는 동시에, 도시된 제1 방향에 따라 제3 노드(V5 노드)와 제2 노드(V3 노드) 사이에 있는 노드들을 검출한다.
상기 제1 노드(V1 노드)와 제2 노드(V3 노드) 사이에 위치한 노드들은, i)우선 제1 노드(V1 노드)와의 거리가 '1' 만큼 떨어져 있어야 하고, ii)상기 제2 노드(V3 노드)와의 거리가 '1' 만큼 떨어져 있어야 한다. 상기 V1 노드와의 거리가 '1' 만큼 떨어진 노드들은, 도 9b의 인접행렬(A)을 통해 알 수 있다. 또한, 제2 노드(V3 노드)와의 거리가 '1' 만큼 떨어진 노드들은, 도 9b의 인접행렬(A)을 통해 알 수 있다. 위의 과정을 통해, V2 노드가 V1 노드 및 V3 노드 사이에 위치함을 알 수 있다.
V5 노드 및 V3 노드 사이에 위치하는 노드를 검출하는 방법은 이미 상술한 방법과 같으므로 설명을 생략한다.
상술한 내용을 일반화하여 정리하면 다음과 같다.
우선, 최대지수 경로행렬(Am)에 비해 지수가 '1'만큼 감소한 중간 경로 행 렬(Am-1)을 생성하고, 이를 통해 상기 제1 노드로부터 제1 방향으로 거리가 '1'만큼 이격된 제3 노드를 검출한다. 상기 제3 노드가 검출되면 상기 제3 노드에서 상기 제1 방향으로 검출이 진행되는 동시에, 상기 제1 노드에서 상기 제2 방향으로 검출이 진행된다.
상기 Am-1 행렬을 순차적으로 감소시키기 위해 초기값이 '1'로 설정되는 카운터(cnt)를 설정하고, 상기 인접행렬(A) 및 상기 Am-1 행렬의 지수를 상기 카운터(cnt) 만큼 감소시킨 제1 중간 경로행렬(Am-1- cnt)을 이용하여, 상기 제1 노드로부터 상기 제2 방향으로 카운터(cnt) 만큼 떨어진 노드를 찾는 동시에 상기 제3 노드로부터 상기 제1 방향으로 카운터(cnt) 만큼 떨어진 노드를 찾는다.
상기 카운터를 순차적으로 증가시키면, 상기 제1 노드에서 시작하여 상기 제2 방향을 따라 노드들을 검출하는 동시에, 상기 제3 노드에서 시작하여 상기 제1 방향을 따라 노드들을 검출할 수 있다. 상기 카운터의 최종 값을, 최소 링의 길이(n)에 따라 적절하게 조절하면, 상술한 반복 동작을 통해 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을, 상기 제1 노드에서 상기 제2 노드 방향으로 검출할 수 있다.
제6 단계(S406):
상기 제5 단계(S405) 단계를 통해 상기 제1 노드(시작 노드)에서 제2 노드(시작 노드로부터 가장 이격된 노드) 방향으로 노드들을 검출한다.
상기 제6 단계(S406)는 상기 제5 단계(S405)를 통해 검출한 데이터를 검사하고, 상기 제1 노드 및 제2 노드 사이에 위치하는 모든 노드들을 검출할 때까지 상기 제5 단계(S405)를 반복 수행한다.
도 10a는 본 실시예가 적용되는 네트워크의 일례이다. 도시된 바와 같이, 도 10a의 네트워크는 8개의 노드(V1 내지 V8 노드)로 구성되며, 2개의 최소 링(1001, 1002)을 갖는다. 2개의 최소 링은 길이 '3'의 제1 최소링(V1-V2-V8)과 길이 '7'의 제2 최소링(V2-V3-V4-V5-V6-V7-V8)으로 구성된다.
예를 들어, 최소 링의 길이(n)를 '7'로 하고, 상기 제3 단계(S403)를 수행하면, 상기 수학식 6에 의해 상기 최대 지수(m)는 '4'로 결정되며, 최대지수 경로행렬 A4가 산출된다. 만약 상기 제1 노드(시작 노드)를 'V1 노드'로 설정하는 경우, 상술한 제4 단계(S404)에 의해, 상기 제2 노드(시작 노드로부터 가장 이격된 노드)가 'V4 노드'로 설정되며, 상기 제3 노드(시작 노드로부터 도시된 제1 방향으로 거리 '1' 만큼 이격되는 노드)는 'V8 노드'로 설정된다.
이 상황에서 상기 제5 단계(S405)를 수행하면, 도 10b에 도시된 바와 같이, V1 노드에서 도시된 제2 방향에 위치하는 노드와 V2 노드에서 도시된 제1 방향에 위치하는 노드가 모두 'V2 노드'로 결정된다.
최소 링 내에 동일한 노드가 두 번 사용된다면, 이는 최소 링이 성립되지 않는다는 것을 의미한다. 따라서, 상기 제1 노드를 'V1 노드'로 설정하는 경우에는 길이 '7'의 최소 링이 성립하지 않는다.
상기 제6 단계(S406)는 도 10b에 도시된 바와 같이 최소 링 내에 동일한 노드가 두 번 사용된 경우, 해당 데이터를 삭제한다.
제7 단계(S407):
상기 제7 단계(S407)는 상술한 제6 단계(S406)까지의 결과를 그룹화(grouping)하는 단계이다.
예를 들어, 도 10a의 네트워크에 대하여 본 실시예를 적용한 경우, 최소 링의 길이(n)를 '3'으로 설정하고, 상기 제6 단계(S406)까지의 동작을 수행하면, V1, V2, V8이라는 데이터를 얻을 수 있다.
또한, 최소 링의 길이(n)를 '4' 내지 '6'으로 설정하고, 상기 제6 단계(S406)까지의 동작을 수행하면, 아무런 데이터도 얻을 수 없다. 또한, 최소 링의 길이(n)를 '7'으로 설정하고, 상기 제6 단계(S406)까지의 동작을 수행하면, V2, V3, V4, V5, V6, V7, V8이라는 데이터를 얻을 수 있다.
상기 제7 단계(S407)는 상기 제6 단계(S406)까지의 결과를 그룹화하는 단계이므로, 상기 V1, V2, V8를 하나의 최소 링을 이루는 노드 집합(node set)으로 그룹화하고, 상기 V2, V3, V4, V5, V6, V7, V8를 또 다른 최소 링을 이루는 노드 집합으로 그룹화한다. 상기 그룹화된 노드 집합 각각은 하나의 SSSR이 된다.
상기 그룹화된 데이터는 상기 표시장치(103)를 통해 출력되거나, 상기 외부기억수단(105)에 저장되는 것이 바람직하다.
바람직하게, 상기 제7 단계는 배타합(XOR: exclusive-OR) 연산을 통해 새롭게 그룹화된 노드들의 집합이 이미 그룹화된 노드 집합들을 전부 포함하는지 여부 를 검사한다.
도 11a는 배타합(XOR: exclusive-OR) 연산을 통해 새롭게 그룹화된 노드들의 집합이 이미 그룹화된 노드 집합들을 전부 포함하는지 여부를 검사하는 개념을 설명한다.
도 11a에 도시된 바와 같이 새롭게 그룹화된 노드들의 집합(1101)과 이미 그룹화된 노드 집합(1102)에 대하여 배타합(XOR) 연산을 수행하면, 연산 결과(1103)를 얻을 수 있다.
만약, 상기 연산 결과(1103)과 이미 그룹화된 노드 집합(1102)에 포함된다면, 새롭게 그룹화된 노드들의 집합(1101)은 이미 그룹화된 노드 집합(1102)을 포함하는 것이 되기 때문에, 새롭게 그룹화된 노드들의 집합(1101)은 최소 링을 이루는 것이 아닌 것으로 판단된다.
도 11b는 상기 제7 단계를 설명하기 위한 또 다른 도면이다.
도 11b의 네트워크는 2개의 최소 링으로 이루어진다. 그러나 도 11b의 네트워크에 상응하는 인접행렬을 이용하여 상기 제1 단계(S401) 내지 제6 단계(S406)를 수행하면, 3개의 노드 집합을 얻을 수 있다. 즉, V1-V2-V4로 이루어진 제1 노드 집합과, V2-V3-V4로 이루어진 제2 노드 집합과, V1-V2-V3-V4로 이루어진 제3 노드 집합을 얻을 수 있다.
만약 최초로 상기 제1 노드 집합을 구한 경우에는 배타합(XOR) 연산을 수행할 대상이 없으므로, 상기 제1 노드 집합을 SSSR로 판단할 수 있다. 그러나 이후에 상기 제2 노드 집합이 구해진 경우에는 상기 제1 노드 집합과 상기 제2 노드 집합 에 대해 배타합(XOR) 연산을 수행한다.
[V1, V2. V4] XOR [V2, V3, V4] = [V1, V3]
상기 제1 노드 집합과 상기 제2 노드 집합에 대한 배타합(XOR) 연산의 결과는 상기 수학식 7과 같다. 상기 배타합 연산을 통해 [V1, V3]의 결과를 얻을 수 있는데, 이 결과는 이미 찾은 제1 노드 집합(V1-V2-V4)에 속하지 않는다. 따라서, 상기 제2 노드 집합 역시 SSSR로 판단한다.
이후에 상기 제3 노드 집합이 구해진 경우에는 상기 제1 노드 집합과 상기 제3 노드 집합에 대해 배타합(XOR) 연산을 수행하고, 상기 제2 노드 집합과 상기 제3 노드 집합에 대해 배타합(XOR) 연산을 수행한다.
[V1, V2. V4] XOR [V1, V2, V3, V4] = [V3]
상기 제1 노드 집합과 상기 제3 노드 집합에 대한 배타합(XOR) 연산의 결과는 상기 수학식 8과 같다. 상기 배타합 연산을 통해 [V3]의 결과를 얻을 수 있는데, 이 결과는 이미 찾은 제2 노드 집합(V2-V3-V4)에 속한다. 따라서, 상기 제3 노드 집합은 SSSR에 해당하지 않는 것으로 판단한다.
제8 단계(S408) 및 제9 단계(S409):
제3 단계(S403) 내지 상기 제7 단계(S407)는 임의의 최소 길이(n)를 갖는 최소 링을 찾는 단계이므로, 상기 최소 길이(n)를 다양하게 변화시키는 경우, 주어진 네트워크 구조에 포함되는 모든 SSSR을 찾을 수 있다.
즉, 상기 최소 길이(n)를 처음에는 '3'으로 설정하고, SSSR을 찾은 이후, 상기 최소 길이(n)를 순차적으로 '4', '5', '6', '7' 순으로 증가시키면서 상기 제3 단계(S403) 내지 상기 제7 단계(S407) 단계를 수행하면, 하나의 네트워크에 포함되는 모든 SSSR을 찾을 수 있다. 이를 위해, 상기 최소 길이(n)를 순차적으로 증가시키기 위해 소정의 카운터를 사용하는 것이 바람직하다.
상기 제8 단계(S408)는, 상기 제7 단계(S407)를 통해 발견된 SSSR의 개수가 상기 수학식 4에 의해 산출되는 '최소 링의 개수'와 동일해질 때까지 상기 제3 단계(S403) 내지 제7 단계(S407)를 반복시킨다. 상기 '최소 링의 개수' 만큼 SSSR을 찾지 못한 경우에는 제1 지수(n)를 증가시키고(409), 상기 상기 제3 단계(S403) 내지 제7 단계(S407)를 반복시킨다.
본 실시예가 적용된 일례:
본 실시예를 더욱 상세하게 설명하기 위해, 상술한 기법에 따라 도 10a에 도시된 네트워크에 포함된 SSSR을 찾는 일례를 설명한다.
도 10a에 상응하는 인접행렬(A)은 하기 수학식 9와 같다.
Figure 112008007588257-pat00006
우선, 상기 제1 단계(S401)를 수행한다. 즉, 상기 인접행렬(A)을 입력장치(104) 도는 외부기억수단(105) 등을 통해 입력한다.
이후, 상기 제2 단계(S402)를 수행한다. 즉, 상기 인접행렬(A)에 포함되는 최소 링의 개수를 상기 수학식 4에 의해 계산한다. 결과적으로, 상기 수학식 4에 의해 '2' 개의 최소 링이 포함되는 것을 알 수 있다.
이후, 상기 제3 단계(S403)를 수행한다. 즉, 길이 '3'의 최소 링을 찾기 위해, 최소 길이(n)를 '3'으로 설정한다. 이 경우, 상기 최소 길이(n)는 홀수이므로, 상기 최대 지수(m)는 상기 수학식 6에 의해 '2'로 결정된다.
이후, 상기 제4 단계(S404)를 수행한다. 즉, 상기 A2 행렬 및 A1 행렬을 이용하여 제1 노드(시작 노드)와 제2 노드(시작 노드로부터 가장 이격된 노드)를 탐색한다.
최대지수 경로 행렬인 A2 행렬은 하기 수학식 10과 같다.
Figure 112008007588257-pat00007
상기 수학식 10의 A2 행렬에서 '1' 이상의 성분을 갖고 상기 수학식 9의 A 행렬에서 '1'의 성분을 갖는 위치는, (1, 2), (1, 8), (2, 8)이다.
상기 3가지 위치에 따라, 상기 제1 노드 및 제2 노드를 정할 수 있는데, 동시에 여러 개의 제1 노드를 동시에 처리할 수도 있고, 순차적으로 처리할 수도 있다.
이하 설명의 편의를 위해, 우선 (1,2) 위치를 이용하여 제1 노드 및 제2 노드를 탐색하는 일례를 설명한다. 상기 제4 단계(S404)를 수행한 결과, 'V1 노드'가 상기 제1 노드로 정해지고, 'V2 노드'가 상기 제2 노드로 정해진다.
이후, 상기 제5 단계(S405)를 수행한다. 즉, 상기 수학식 9의 A 행렬을 이용하여 V8 노드가 상기 제3 노드(상기 제1 노드로부터 제1 방향으로 거리가 '1' 만큼 이격된 노드)임을 판단한다.
이후, 상기 제6 단계(S406)를 수행한다. 이미 3개의 노드(V1, V2, V8 노드)가 검출되었으므로 상기 제6 단계(S406)를 종료한다.
이후, 상기 제7 단계(S407)를 수행한다. 즉, 상기 V1-V2-V8 노드를 그룹화하여 하나의 SSSR로 판단한다. 이미 찾은 SSSR이 존재하지 않으므로, 상술한 배타합(XOR) 연산은 불필요하다.
바람직하게, 상기와 같이 SSSR이 검출되는 경우, 불필요한 계산의 반복을 방지하기 위해, 해당 SSSR 내에 포함되는 노드들은 더 이상 제1 노드(시작 노드) 및 제2 노드(시작 노드에서 가장 이격된 노드)가 될 수 없도록 한다.
예를 들어, V1-V2-V8 노드가 SSSR로 판단된 이후부터는, i) V1 노드가 제1 노드가 되고, V2 노드 또는 V8 노드가 제2 노드 경우, ii) V2 노드가 제1 노드가 되고, V1 노드 또는 V8 노드가 제2 노드 경우, iii) V8 노드가 제1 노드가 되고, V1 노드 또는 V2 노드가 제2 노드 경우에는 추가적인 연산을 수행하지 않는다.
따라서, 상기 수학식 10의 A2 행렬에서 '1' 이상의 성분을 갖고 상기 수학식 9의 A 행렬에서 '1'의 성분을 갖는 위치는 3개가 존재하더라도, 하나의 위치에 대해서 SSSR을 검출하면 된다.
이후, 상기 제8 단계(S408)를 수행한다.
도 10a에 상응하는 인접행렬은 2개의 SSSR을 포함하므로, 아직 하나의 SSSR을 추가로 탐색하여야 한다. 따라서, 상기 최소 길이(n)을 '4'로 증가시키고(S409), 상기 제3 단계(S403)를 반복한다.
상기 최소 길이(n)가 증가되었으므로, 이후부터는 최소 길이(n)가 '4'인 최소 링을 찾는다. 상기 최소 길이(n)는 짝수이므로, 상기 최대 지수(m)는 상기 수학식 5에 의해 '2'로 결정된다. 결국 A2 행렬 및 A1 행렬을 이용하여 제1 노드(시작 노드)와 제2 노드(시작 노드로부터 가장 이격된 노드)를 탐색할 수 있다.
상기 수학식 10의 A2 행렬에는 '2' 이상의 성분이 존재하지 않으므로(대각 성분 및 대각 성분의 아래 측에 존재하는 성분은 판단하지 않음), 최소 길이(n)가 '4'인 최소 링은 존재하지 않는 것으로 판단한다.
상기 최소 길이(n)가 '4' 내지 '6'인 최소 링은 존재하지 않으므로, 상기 S404 단계를 수행할 수 없거나, 상기 S405 단계를 통해 중복된 노드를 검출하게 된다. 즉, 상술한 동작을 반복해도 상기 최소 길이(n)가 '4' 내지 '6'인 최소 링은 찾아내지 못한다.
결국 상기 제9 단계(S409)에 의해 최소 길이(n)를 '7'로 설정하고, 상기 제3 단계(S403)를 반복하게 된다. 최소 길이(n)가 홀수인 '7'로 설정되므로, 상기 최대 지수(m)는 상기 수학식 6에 의해 '4'로 결정된다.
이 경우, 최대지수 경로행렬인 A4 행렬은 하기 수학식 11과 같고, 상기 최대지수 경로행렬보다 지수가 '1' 만큼 낮은 중간 경로행렬 A3은 하기 수학식 12과 같다.
Figure 112008007588257-pat00008
Figure 112008007588257-pat00009
이후, 상기 제4 단계(S404)를 수행한다. 즉, 상기 A4 행렬 및 A3 행렬을 이용하여 제1 노드(시작 노드)와 제2 노드(시작 노드로부터 가장 이격된 노드)를 탐색한다.
상기 수학식 11의 A4 행렬에서 '1' 이상의 성분을 갖고 상기 수학식 12의 A3행렬에서 '1'의 성분을 갖고, A2 내지 A1 행렬에서 '0'의 성분을 갖는 노드는 (V1-V4), (V1-V6), (V2-V5), (V2-V6), (V3-V6), (V3-V7), (V4-V7), (V4-V8), (V5-V8)들이다.
상술한 9개의 노드 조합 중, (V1-V4)의 경우(즉, 'V1 노드'를 제1 노드로 정하고, 'V4 노드'를 제2 노드로 정하는 경우)에 대해 상기 제5 단계(S405) 내지 상기 제(S407) 단계를 수행하면, S405를 수행하는 과정에서 V2 노드가 2번 반복하여 검출되므로, 결국 최소 링을 형성하지 못한다.
또한, (V1-V6)의 경우, S405를 수행하는 과정에서 V8 노드가 2번 반복하여 검출되므로, 결국 최소 링을 형성하지 못한다.
이하, (V2-V5)의 경우에 대하여 상세하게 설명한다.
도 12a는 V2 노드가 제1 노드로 탐색되고, V5 노드가 제2 노드로 탐색된 일례이다. 상기 제5 단계(S405)를 수행하면 제3 노드(제1 노드로부터 제1 방향으로 '1' 만큼 이격된 노드)를 검출할 수 있다.
제3 노드를 검출하기 위해서는 A3 행렬을 이용하여, 제2 노드(V5 노드)로부 터 '3'만큼 이격되고, A 행렬을 이용하여 제1 노드(V2 노드)로부터 '1' 만큼 이격된 노드를 검출한다. 결국, 'V8 노드'가 제3 노드로 검출된다.
바람직하게, A3 행렬을 이용하여, 제2 노드(V5 노드)로부터 '3' 만큼 이격되는 위치를 찾는 과정은, A3 행렬의 5번째 열(column) 상에서 '1' 성분을 갖는 위치를 찾는 과정을 의미한다. 또한, A 행렬을 이용하여, 제1 노드(V2 노드)로부터 '1' 만큼 이격되는 위치를 찾는 과정은, A 행렬의 2번째 행(row) 상에서 '1' 성분을 갖는 위치를 찾는 과정에 해당한다.
상기 제3 노드를 검출하더라도, 검출된 노드는 3개(V2, V5, V8)에 불과하므로, 상기 제5 단계(S405)는 반복된다.
도 12b는 상기 제5 단계가 반복되는 경우 검출되는 노드를 나타낸다.
상기 제5 단계(S405)를 반복수행하면 제3 노드로부터 제1 방향으로 '1' 만큼 이격되는 노드(도 12b의 1202 노드)와 제1 노드로부터 제2 방향으로 '1' 만큼 이격되는 노드(도 12b의 1201 노드)를 검출할 수 있다.
A2 행렬을 이용하여, 제2 노드(V5 노드)로부터 '2'만큼 이격되고, A 행렬을 이용하여 제3 노드(V8 노드)로부터 '1' 만큼 이격된 노드를 검출하는 방식으로 도 12b의 1202 노드를 검출한다. 결국, 'V7 노드'가 1202 노드로 검출된다.
또한, A2 행렬을 이용하여, 제2 노드(V5 노드)로부터 '2'만큼 이격되고, A 행렬을 이용하여 제1 노드(V2 노드)로부터 '1' 만큼 이격된 노드를 검출하는 방식 으로 도 12b의 1201 노드를 검출한다. 결국, 'V3 노드'가 1201 노드로 검출된다.
상술한 동작을 수행하여도, 검출된 노드는 5개(V2, V5, V8, V3, V7)에 불과하므로, 상기 제5 단계(S405)는 반복된다.
도 12c는 상기 제5 단계가 반복되는 경우 검출되는 노드를 나타낸다.
상기 제5 단계(S405)를 반복수행하면 도 12b의 1202 노드로부터 제1 방향으로 '1' 만큼 이격되는 노드(도 12c의 1204 노드)와 도 12b의 1201 노드부터 제2 방향으로 '1' 만큼 이격되는 노드(도 12c의 1203 노드)를 검출할 수 있다.
A 행렬을 이용하여, 제2 노드(V5 노드)로부터 '1' 만큼 이격되고, A 행렬을 이용하여 도 12b의 1202 노드(V7 노드)로부터 '1' 만큼 이격된 노드를 검출하는 방식으로 도 12c의 1204 노드를 검출한다. 결국, 'V6 노드'가 1204 노드로 검출된다.
또한, A 행렬을 이용하여, 제2 노드(V5 노드)로부터 '1' 만큼 이격되고, A 행렬을 이용하여 도 12b의 1201 노드(V3 노드)로부터 '1' 만큼 이격된 노드를 검출하는 방식으로 도 12c의 1203 노드를 검출한다. 결국, 'V4 노드'가 1203 노드로 검출된다.
결국 도 12d와 같은 최종 결과를 얻을 수 있다.
상기 최종 결과인 [V2, V3, V4, V5, V6, V7, V8]은 이미 찾은 [V1, V2, V8]을 그대로 포함하는 것이 아니므로, SSSR에 해당한다. 즉, [V2, V3, V4, V5, V6, V7, V8]과 [V1, V2, V8]에 대해 배타합(XOR) 연산을 수행시키면, [V1, V3, V4, V5, V6, V7]의 결과을 얻는데, 이 결과는 종전에 찾은 SSSR에 포함되지 않는다.
상술한 동작을 통해 2개의 SSSR을 모두 찾았으므로 모든 동작이 완료된다.
도 13 내지 도 21은 본 실시예가 적용되는 기법의 우수한 성능을 나타내는 도면이다.
도 13에 도시된 네트워크는 길이(n)가 '3'인 최소 링이 36개가 포함된 네트워크이다. 그러나 종래에 제안된 Figueras 기법을 사용하면, 길이가 '3'인 최소 링은 '25'개 밖에 발견하지 못하고, '4' 이상의 길이를 갖는 링을 발견한다. 또한, 종래에 제안된 Welch 기법을 사용하면, 길이가 '3'인 최소 링은 '32'개 밖에 발견하지 못하고, '4' 이상의 길이를 갖는 링을 발견한다. 그러나 본 실시예에 따르면, 주어진 네트워크에 포함되는 최소 링 전부를 발견한다.
도 14 내지 도 17은, 표의 좌측에 도시된 분자 구조에 포함된 SSSR을 찾은 결과를 나타낸다. 즉, 도시된 분자의 우측에 도시된 9, 3, 2, 11의 숫자는 V9 노드, V3 노드, V2 노드, V11 노드가 하나의 SSSR을 이룬다는 것을 의미한다.
도 14 내지 도 17의 결과를 보면, 종래에 제안된 Figueras 기법 또는 Welch 기법은 최소 링을 전부 발견하지 못하는 것에 비해, 본 실시예는 최소 링을 전부 발견한다는 것을 알 수 있다.
도 18은 종래에 알려진 다양한 분자 구조를 나타낸 도면이다. 도 18에 도시된 20개의 구조에 대해 각각의 기법을 적용한 결과는 도 19에 도시된다.
도 19에 도시된 바와 같이, 본 실시예는 종래에 제안된 Figueras 기법 또는 Welch 기법에 비해 훨씬 빠른 속도로 결과를 얻을 수 있다.
도 20 내지 도 21은 이미 알려진 분자 구조에 본 실시예를 적용한 결과이다. 도시된 바와 같이, 분자 구조에 포함된 SSSR을 정확하게 산출할 수 있다.
상술한 본 실시예는 본 발명의 설명하기 위한 것으로, 본 실시예에 사용된 구체적인 수치는 본 발명의 설명을 위한 것에 불과하므로, 구체적인 수치에 의해 본 발명이 제한되지 아니한다.
또한, 본 실시예에서 사용한 제1 단계, 제2 단계에 포함된 숫자는 본 발명의 설명을 위한 것에 불과하므로, 상기 단계들의 순서는 자유롭게 조정될 수 있다. 즉, 제3 단계에 포함되는 동작이, 상기 제2 단계에 포함된 동작 이전에도 수행될 수 있음은 자명하다.
위에서 설명된 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대한 통상의 지식을 가지는 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
본 발명은 네트워크 구조를 분석하는데 필수적인 최소 링을 빠르고 정확하게 찾는 기법을 제공하므로 산업상 매우 유용하다 할 것이다. 종래에는 네트워크에 포함되는 최소 링을 전부 찾아내는 것이 매우 어렵다고 알려져 있었으나, 본 실시예는 네트워크에 포함된 최소 링 전부를 찾아내는 새로운 기법을 제안하고 있는바, 당연히 산업상 이용가능성이 인정되어야 할 것이다.
도 1 및 도 2는 인접행렬을 설명하기 위한 도면이다.
도 3은 본 발명에 따른 기법을 실행하는 컴퓨터의 일례를 나타내는 블록도이다.
도 4는 본 실시예에 따라 'SSSR'을 찾는 과정을 나타낸 절차흐름도의 일례이다.
도 5는 6개의 노드(V1 내지 V6)를 갖는 네트워크의 일례이다.
도 6은 인접행렬 및 n차 경로행렬을 이용하여, 노드 간의 정보를 분석하는 방법을 나타낸다.
도 7은 특정한 노드로부터 가장 이격된 노드를 찾는 방법을 설명하기 위한 도면이다.
도 8a 및 도 8b는, 최소 링의 길이(n)가 짝수인 경우, 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을 검출하는 방법을 설명하는 도면이다.
도 9a 및 도 9b는, 최소 링의 길이(n)가 홀수인 경우, 상기 제1 노드 및 제2 노드 사이에 위치하는 노드들을 검출하는 방법을 설명하는 도면이다.
도 10a 및 도 10b는 본 실시예가 적용되는 네트워크의 일례이다.
도 11은 본 실시예의 제7 단계를 설명하기 위한 도면이다.
도 12a 내지 도 12d는 본 실시예에 따라 노드를 검출하는 과정을 설명하는 도면이다.
도 13 내지 도 21은 본 실시예가 적용되는 기법의 우수한 성능을 나타내는 도면이다.

Claims (16)

  1. 컴퓨터에
    네트워크 상에 위치하는 노드(node)들의 연결 관계를 나타내는 인접행렬을 획득하는 제1 기능;
    소정의 최소 길이의 폐구간을 이루는 노드들을 검출하기 위하여, 상기 최소 길이에 상응하는 최대 지수(exponent)만큼 상기 인접행렬을 거듭 제곱하여 최대지수 경로행렬을 산출하는 제2 기능;
    상기 최대지수 경로행렬 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 적어도 하나의 경로행렬을 이용하여 소정의 제1 노드로부터 가장 이격된 제2 노드를 탐색하는 제3 기능;
    상기 최대지수 경로행렬의 지수를 순차적으로 감소시켜 산출한 적어도 하나의 경로행렬을 이용하여, 상기 제1 노드에서 상기 제2 노드 방향으로 상기 제1 노드 및 상기 제2 노드 사이에 위치하는 적어도 하나의 노드를 순차적으로 검출하는 제4 기능; 및
    상기 제1 노드, 상기 제2 노드 및 상기 제4 기능에 의해 검출된 노드를, 최소 길이의 폐구간을 이루는 하나의 노드 집합으로 그룹화(grouping)하는 제5 기능
    을 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  2. 제1항에 있어서,
    상기 인접행렬의 모서리(edge) 및 꼭지점(vertex)의 개수를 이용하여, 상기 인접행렬에서 검출 가능한 최소 길이의 폐구간의 개수를 산출하는 제6 기능
    을 더 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  3. 제2항에 있어서,
    상기 제6 기능에 의해 그룹화된 노드 집합의 개수가 상기 제6 기능에 의해 산출된 폐구간의 개수와 동일해질 때까지, 상기 최소 길이를 순차적으로 증가시키며 상기 제2 기능 내지 제5 기능을 반복 수행하는 제7 기능
    을 더 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  4. 제1항에 있어서,
    상기 최소 길이가 짝수인 경우, 상기 최대 지수(m) 및 상기 최소 길이(n)는
    Figure 112008007588257-pat00010
    에 의하고,
    상기 최소 길이가 홀수인 경우, 상기 최대 지수(m) 및 상기 최소 길이(n)는
    Figure 112008007588257-pat00011
    에 의하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  5. 제1항에 있어서,
    상기 최소 길이가 짝수인 경우,
    상기 제3 기능은, 상기 최대지수 경로행렬에 포함된 성분(element) 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 경로행렬 전부를 비교하여, 상기 낮은 지수의 경로행렬에서 ‘0’ 성분을 가지며, 상기 최대지수 경로행렬에서 ‘2’ 이상의 성분을 갖는 노드를 탐색하는 기능인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  6. 제1항에 있어서,
    상기 최소 길이가 홀수인 경우,
    상기 제3 기능은, 상기 최대지수 경로행렬에 포함된 성분(element) 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 경로행렬 전부를 비교하여, 상기 낮은 지수의 경로행렬에서 ‘0’ 성분을 가지며, 상기 최대지수 경로행렬에 비해 지수가 ‘1’ 만큼 낮은 경로행렬과 상기 최대지수 경로행렬에서 ‘1’ 이상의 성분을 갖는 노드를 탐색하는 기능인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  7. 제1항에 있어서,
    상기 제4 기능은,
    상기 최소 길이가 짝수인 경우,
    상기 최대지수 경로행렬의 지수를 순차적으로 감소시키기 위한 카운터를 초기화시키는 제8 기능;
    상기 최대지수 경로행렬보다 상기 카운터만큼 차수가 감소한 경로행렬을 산출하는 제9 기능;
    상기 제9 기능에 의해 산출된 경로행렬을 이용하여, 상기 제1 노드로부터 상기 카운터에 상응하는 길이만큼 이격된 노드를 검출하는 제10 기능; 및
    상기 제1 노드 및 상기 제2 노드 사이에 위치하는 노드가 전부 검출될 때까지, 상기 카운터를 증가시키며 상기 제9 기능 및 상기 제10 기능을 반복 수행하는 제11 기능을 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  8. 제1항에 있어서,
    상기 제4 기능은,
    상기 최소 길이가 홀수인 경우,
    상기 최대지수 경로행렬에 비해 지수가 ‘1’ 만큼 감소한 중간 경로행렬을 이용하여, 상기 제1 노드로부터 제1 방향으로 거리가 ‘1’ 만큼 이격된 제3 노드를 검출하는 제12 기능;
    상기 중간 경로행렬의 지수를 순차적으로 감소시키기 위한 카운터를 초기화시키는 제13 기능;
    상기 중간 경로행렬에 비해 차수가 상기 카운터만큼 감소한 경로행렬을 산출하는 제14 기능;
    상기 제14 기능에 의해 산출된 경로행렬을 이용하여, 상기 제1 노드로부터 제2 방향으로 상기 카운터에 상응하는 길이만큼 이격된 노드 및 상기 제3 노드로부터 제1 방향으로 상기 카운터에 상응하는 길이만큼 이격된 노드를 검출하는 제15 기능; 및
    상기 제1 노드 및 상기 제2 노드 사이에 위치하는 노드가 전부 검출될 때까지, 상기 카운터를 증가시키며 상기 제14 기능 및 상기 제15 기능을 반복 수행하는 제16 기능을 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  9. 제1항에 있어서
    상기 제5 기능은,
    이미 그룹화된 노드 집합이 존재하는 경우, 새롭게 그룹화된 노드 집합이 이미 그룹화된 노드 집합의 노드들을 전부 포함하는지 여부를 검사하는 제17 기능을 더 포함하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  10. 제9항에 있어서
    상기 제17 기능은, 배타합(exclusive-OR) 연산에 의해 수행되는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  11. 제1항에 있어서
    상기 인접행렬에 포함된 개방된 비환식 노드(open acyclic node)를 제거하는 제18 기능을 더 수행하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  12. 제1항에 있어서
    상기 인접 행렬은 분자에 포함된 원자들의 연결 관계를 나타내는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  13. 컴퓨터에
    네트워크 상에 위치하는 노드(node)들의 연결 관계를 나타내는 인접행렬을 획득하는 제1 단계;
    상기 인접행렬의 모서리(edge) 및 꼭지점(vertex)의 개수를 이용하여, 상기 인접행렬에서 검출 가능한 최소 길이의 폐구간의 개수를 산출하는 제2 단계;
    상기 폐구간의 길이를 순차적으로 증가시키기 위한 제1 카운터를 초기화 시키는 제3 단계;
    상기 제1 카운터에 상응하는 길이의 폐구간을 이루는 노드들을 검출하기 위하여, 상기 제1 카운터에 상응하는 최대 지수(exponent)만큼 상기 인접행렬을 거듭 제곱하여 최대지수 경로행렬을 산출하는 제4 단계;
    상기 최대지수 경로행렬 및 상기 최대지수 경로행렬에 비해 낮은 지수를 갖는 적어도 하나의 경로행렬을 이용하여 소정의 제1 노드로부터 가장 이격된 제2 노드를 탐색하는 제5 단계;
    상기 제1 노드 및 제2 노드 사이에 위치하는 노드를 검출하기 위한 제2 카운 터를 초기화시키는 제6 단계;
    상기 최대지수 경로행렬에 비해 지수가 상기 제2 카운터만큼 감소하는 중간 경로행렬을 산출하는 제7 단계;
    상기 중간 경로행렬을 이용하여, 상기 제1 노드에서 상기 제2 노드 방향으로 상기 제1 노드에서 상기 제2 카운터에 상응하는 거리만큼 이격된 적어도 하나의 노드를 순차적으로 검출하는 제8 단계;
    상기 제1 노드 및 상기 제2 노드 사이에 위치하는 노드가 모두 검출될 때까지, 상기 제2 카운터를 증가시키면서 상기 제7 단계 및 상기 제8 단계를 반복 수행하는 제9 단계;
    상기 제1 노드, 상기 제2 노드 및 상기 검출된 노드를, 최소 길이의 폐구간을 이루는 하나의 노드 집합으로 그룹화(grouping)하는 제10 단계;
    상기 제10 단계에 의해 그룹화된 노드 집합의 개수가 상기 제2 단계에 의한 검출 가능한 최소 길이의 폐구간의 개수와 일치할 때까지, 상기 제1 카운터를 증가시키면서 상기 제4 단계 내지 상기 제10 단계를 반복 수행하는 제11 단계
    를 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  14. 제13항에 있어서,
    상기 제1 카운터가 짝수인 경우, 상기 최대 지수(m) 및 상기 제1 카운터(n)는
    Figure 112008007588257-pat00012
    에 의하고,
    상기 제1 카운터가 홀수인 경우, 상기 최대 지수(m) 및 상기 제1 카운터(n)는
    Figure 112008007588257-pat00013
    에 의하는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  15. 제13항에 있어서
    상기 인접행렬은 개방된 비환식 노드(open acyclic node)가 제거된 행렬인 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
  16. 제13항에 있어서
    상기 인접행렬에 포함된 성분은 각 노드 간에 경로가 존재하는지 여부를 나타내는 것을 특징으로 하는 프로그램을 기록한 컴퓨터로 읽을 수 있는 매체.
KR1020080009211A 2008-01-29 2008-01-29 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체 KR100920966B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080009211A KR100920966B1 (ko) 2008-01-29 2008-01-29 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080009211A KR100920966B1 (ko) 2008-01-29 2008-01-29 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체

Publications (2)

Publication Number Publication Date
KR20090083198A KR20090083198A (ko) 2009-08-03
KR100920966B1 true KR100920966B1 (ko) 2009-10-09

Family

ID=41204176

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080009211A KR100920966B1 (ko) 2008-01-29 2008-01-29 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체

Country Status (1)

Country Link
KR (1) KR100920966B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101047429B1 (ko) 2009-03-09 2011-07-07 연세대학교 산학협력단 최단경로행렬을 이용하여 최소 길이의 폐구간을 이루는 노드들을 검출하는 프로그램이 저장된 매체

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110319845B (zh) 2018-03-30 2024-01-09 日本电气株式会社 用于确定两点之间的可达路径的方法、装置和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010064742A (ko) * 1999-12-18 2001-07-11 이계철 제약 조건을 적용한 최적경로 산정 방법
KR20020045916A (ko) * 2000-12-11 2002-06-20 이계철 회전 금지, 유-턴, 피-턴을 고려한 다익스트라 알고리즘또는 플로이드-워셜 알고리즘을 이용한 최단경로 산출방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010064742A (ko) * 1999-12-18 2001-07-11 이계철 제약 조건을 적용한 최적경로 산정 방법
KR20020045916A (ko) * 2000-12-11 2002-06-20 이계철 회전 금지, 유-턴, 피-턴을 고려한 다익스트라 알고리즘또는 플로이드-워셜 알고리즘을 이용한 최단경로 산출방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101047429B1 (ko) 2009-03-09 2011-07-07 연세대학교 산학협력단 최단경로행렬을 이용하여 최소 길이의 폐구간을 이루는 노드들을 검출하는 프로그램이 저장된 매체

Also Published As

Publication number Publication date
KR20090083198A (ko) 2009-08-03

Similar Documents

Publication Publication Date Title
CN110319845B (zh) 用于确定两点之间的可达路径的方法、装置和系统
CN110967028B (zh) 导航地图构建方法、装置、机器人及存储介质
US8196077B2 (en) Cell-library-for-statistical-timing-analysis creating apparatus and statistical-timing analyzing apparatus
CN107276896B (zh) 改进迪杰斯特拉算法的两点间最短路径搜索方法
CN105721207A (zh) 电力通信网中通信节点重要度的确定方法和装置
Mo et al. Choosing a heuristic and root node for edge ordering in BDD-based network reliability analysis
CN105404631A (zh) 图片识别方法和装置
CN103500168A (zh) 一种基于拓扑势的重叠复杂网络社区发现方法及系统
CN105095482A (zh) 一种检测异常数据区间的数据挖掘方法及系统
CN105677755A (zh) 一种处理图数据的方法及装置
CN105203120A (zh) 导航路线评测方法及装置
KR100920966B1 (ko) 인접행렬을 이용하여 최소 길이의 폐구간을 이루는노드들을 검출하는 프로그램이 저장된 매체
KR101047429B1 (ko) 최단경로행렬을 이용하여 최소 길이의 폐구간을 이루는 노드들을 검출하는 프로그램이 저장된 매체
EP2958023A1 (en) System analysis device and system analysis method
US9996641B2 (en) Thermal simulation device and method for integrated circuits
JP5697768B1 (ja) 道路ネットワーク評価方法、道路ネットワーク評価装置、プログラム、並びに情報記録媒体
CN104714964A (zh) 一种生理数据离群检测方法及装置
US20140012858A1 (en) Data processing method, data query method in a database, and corresponding device
CN108011735B (zh) 社区发现方法及装置
KR20170061911A (ko) 통합 회귀 분석 네트워크 구축 방법 및 이에 의한 통합 분석 시스템
CN108804625A (zh) 一种lsm树的优化方法、装置及计算机设备
Fattore et al. Measuring structural dissimilarity between finite partial orders
Szabó et al. Greedy algorithms for triangle free coloring
CN105868095B (zh) 生成测试数据的方法及设备
KR101047975B1 (ko) 방향성 노드 네트워크에서 최소 길이의 폐구간을 이루는 링을 인식하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120829

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee