KR100970823B1 - 그래프 분석 및 동기화를 위한 방법 및 시스템 - Google Patents

그래프 분석 및 동기화를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR100970823B1
KR100970823B1 KR1020050031578A KR20050031578A KR100970823B1 KR 100970823 B1 KR100970823 B1 KR 100970823B1 KR 1020050031578 A KR1020050031578 A KR 1020050031578A KR 20050031578 A KR20050031578 A KR 20050031578A KR 100970823 B1 KR100970823 B1 KR 100970823B1
Authority
KR
South Korea
Prior art keywords
graph
synchronization
link
elements
links
Prior art date
Application number
KR1020050031578A
Other languages
English (en)
Other versions
KR20060045780A (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 마이크로소프트 코포레이션
Publication of KR20060045780A publication Critical patent/KR20060045780A/ko
Application granted granted Critical
Publication of KR100970823B1 publication Critical patent/KR100970823B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Image Generation (AREA)

Abstract

순환적 그래프가 분할될 수 있다. 순환적 그래프의 분할은 순환적 그래프의 비순환적 구성요소 및 한 세트의 분할된 링크를 포함할 수 있다. 순환적 그래프의 분할은 특정 순서를 가질 수 있다. 순환적 그래프의 요소들은 특정 직렬화 순서를 가지고 직렬화될 수 있다. 순환적 그래프의 요소들의 직렬화 순서는, 순환적 그래프의 분할 순서에 해당할 수 있다. 순환적 그래프의 비순환적 구성요소의 요소들은 분할된 링크의 세트의 요소들 이전에 직렬화될 수 있다. 컴퓨터 시스템은, 순환적 그래프를 분할하도록 구성된 그래프 동기화 구성요소를 포함할 수 있고 순환적 그래프의 요소들의 직렬화 순서를 결정할 수 있다. 순환적 그래프의 직렬화는, 결정된 직렬화 순서로 순환적 그래프의 요소들을 직렬화한다.
순환적 그래프, 컴퓨터 시스템, 기본 그래프, 목표 그래프, 노드, 링크, 분할, 직렬화 순서, 동기화

Description

그래프 분석 및 동기화를 위한 방법 및 시스템{METHOD AND SYSTEM FOR GRAPH ANALYSIS AND SYNCHRONIZATION}
도 1은 간단한 순환적 그래프의 개략도.
도 2는 본 발명의 일 실시예를 구현하기 위해 사용 가능한 예시적인 컴퓨터 시스템을 일반적으로 도시하는 개략도.
도 3은 본 발명의 일 실시예에 따른 예시적인 고수준 컴퓨터 시스템 구조를 도시하는 개략도.
도 4는 본 발명의 일 실시예에 따른 예시적인 그래프 동기화 구성요소를 도시하는 개략도.
도 5는 본 발명의 일 실시예에 따라 두 개의 그래프를 동기화하기 위한 예시적인 단계를 도시하는 흐름도.
도 6은 예시적인 비순환적 그래프의 개략도.
도 7은 예시적인 순환적 그래프의 개략도.
도 8은 본 발명의 일 실시예에 따라 그래프를 분할하기 위한 예시적인 단계를 도시하는 흐름도.
도 9는 다른 예시적인 순환적 그래프의 개략도.
도 10은 또다른 예시적인 순환적 그래프의 개략도.
도 11은 본 발명의 일 실시예에 따라 분할된 예시적인 그래프의 개략도.
도 12는 본 발명의 일 실시예에 따라 그래프를 직렬화하기 위한 예시적인 단계를 도시하는 흐름도.
도 13은 본 발명의 실시예에 따른 예시적인 그래프 동기화 응용 프로그래밍 인터페이스를 도시하는 블럭도.
<도면의 주요 부분에 대한 부호의 설명>
100: 순환적 그래프 102, 106, 110: 노드
104, 108, 112: 인프라 링크 302: 그래프 동기화 구성요소
304: 검증 그래프 관리 시스템 306: 기본 그래프
308: 그래프 관리 시스템 310: 목표 그래프
<관련 특허 출원과의 상호 참조>
본 특허 출원은 대리인 사건번호 제 228882호로서 2004년 5월 21일에 출원된 발명의 명칭이 "그래프 분석 및 동기화를 위한 방법 및 시스템{METHOD AND SYSTEM FOR GRAPH ANALYSIS AND SYNCHRONIZATION}"인 미국 특허 가출원 제60/573,288호의 이익을 청구한다.
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로서, 보다 구체적으로는 컴퓨터 시스템 데이터 구조의 조작에 관한 것이다.
많은 수의 유용한 컴퓨터 시스템 응용은, 노드(즉, 정점(vertices)) 및 노드 사이의 링크(즉, 에지)를 갖는 그래프 데이터 구조를 포함하는데, 예를 들면, 네트워크, 조직적 구조 및 데이터베이스 스키마(database schema)와 상호 작용하는 컴퓨터 시스템 응용을 들 수 있다. 그 결과, 다양한 유형의 그래프 관리 시스템(graph management system, GMS)이 대중화되어 왔다. 통상의 GMS 동작은 그래프 관리 시스템들 내부 또는 그 시스템들 간에 그래프를 복제하거나, 보다 일반적으로 두 그래프를 동기화시키는 것이다.
설명의 목적 상, 그래프 관리 시스템은 검증 그래프 관리 시스템(verified GMS, VGMS) 및 비검증 그래프 관리 시스템(unverified GMS)로 카테고리화될 수 있다. 검증 그래프 관리 시스템은, 관리된 그래프가 각각의 그래프 조작 동작 이후 유효한 상태에 있는지 검증할 수 있다. 예를 들면, 검증 그래프 관리 시스템은 존재하지 않는 노드에 링크하는 결과를 가져오거나, 일부 다른 구성의 그래프 제약을 위반할 수 있는 그래프 조작 동작을 허용하지 않을 수 있다. 검증 그래프 관리 시스템의 예는 경량 디렉토리 액세스 프로토콜(lightweight directory access protocol, LDAP) 서버 및 구조화 질의어(structured query language, SQL) 서버를 포함한다.
그래프를 동기화할 때 장해가 될 수 있는 특정 그래프 제약으로 인프라 링크(또는 인프라 에지) 제약을 들 수 있다. 인프라 링크는 관련 노드의 생성의 일부로서 생성되는(그리고 일부 경우에 있어서는, 반드시 생성되어야 하는) 링크이다. 인프라 링크의 예는 객체 및 객체의 클래스를 정의하기 위해 사용되는 LDAP 스키마 클래스 상속 관계 및 어떤 다른 관계를 포함한다.
순환적 그래프[즉, 순환(cycles) 또는 루프(loops)를 갖는 그래프]를 검증 그래프 관리 시스템에 복제하는 경우, 문제가 일어날 수 있다. 예를 들면, 순환적 그래프를 변형하지 않고서는, 아직 존재하지 않는 노드에 링크하려는 시도를 피하는 순서로 검증 그래프 관리 시스템에서 순환적 그래프의 노드 및 관련 인프라 링크를 생성하는 것이 가능하지 않을 수 있다. 검증 그래프 관리 시스템이 존재하지 않는 노드로의 링크 생성을 허용하지 않는 경우, 검증 그래프 관리 시스템에 순환적 그래프를 복제하는 것은 불가능할 수 있다.
도 1은 예시적인 검증 그래프 관리 시스템에 간단한 순환적 그래프(100)를 복제하는 문제를 도시한다. 노드(102) 및 인프라 링크(104)는 그들이 생성되기 전에 노드(106)가 존재할 것을 요구한다. 노드(106) 및 인프라 링크(108)는 그들이 생성되기 전에 노드(110)가 존재할 것을 요구한다. 그러나, 노드(110) 및 인프라 링크(112)는 그들이 생성되기 전에 노드(102)가 존재할 것을 요구한다. 결과, 노드(102, 106, 110) 및 그 관련 인프라 링크(104, 108, 112)를 위한 생성 순서로서, 아직 존재하지 않는 노드로의 링크를 생성하려는 시도를 피하는 것은 없다. 검증 그래프 관리 시스템에 그래프(100)를 복제하는 것이 불가능할 수 있다.
실제로, 그래프는 그래프(100)보다 상당히 더 복잡할 수 있다. 그 이상의 복잡도는 링크 유형의 다양성 때문에 일어난다. 인프라 링크 외에 필요한 경우, 예를 들면, 복제 및/또는 동기화를 달성하기 위해서, 카테고리를 변경할 수 있는 링크를 포함하는 복수의 카테고리인 링크가 있을 수 있다.
이 부분에서는 본 발명의 일부 실시예에 대한 간단한 요약을 제시한다. 이 요약은 본 발명의 확장적인 개요가 아니다. 본 발명의 주요/결정적 요소를 식별하거나 본 발명의 범위를 정리하고자 의도되지 않는다. 단지 그 목적은 이후 제시되는 더 상세한 설명의 서두로서 간단한 형태로 본 발명의 일부 실시예를 제시하는 것이다.
본 발명의 실시예에서, 순환적 그래프는 분할된다. 순환적 그래프의 분할은 순환적 그래프의 비순환적 구성요소 및 한 세트의 분할된 링크를 포함할 수 있다. 순환적 그래프의 분할은 특정 순서를 가질 수 있다. 순환적 그래프의 요소들은 특정 직렬화 순서를 가지고 직렬화될 수 있다. 순환적 그래프의 요소들의 직렬화 순서는 순환적 그래프의 분할 순서에 해당할 수 있는데, 예를 들면, 순환적 그래프의 비순환적 구성요소의 요소들은 분할된 링크의 세트의 요소들 이전에 직렬화될 수 있다. 본 발명의 일 실시예에서, 컴퓨터 시스템은 순환적 그래프를 분할하고, 순환적 그래프의 요소들의 직렬화 순서를 결정하도록 구성된 그래프 동기화 구성요소를 포함할 수 있다. 본 발명의 일 실시예에서, 순환적 그래프의 직렬화는, 결정된 직렬화 순서로 순환적 그래프의 요소들을 직렬화한다. 그리하여 검증 그래프 관리 시스템에 순환적 그래프를 포함하여, 그래프를 복제하는 것을 가능하게 한다.
본 발명 및 그의 장점은, 첨부된 도면과 결합하여 다음의 상세한 설명으로부터 가장 잘 이해될 수 있겠지만, 청부된 청구항만이 본 발명의 특징을 구체적으로 밝힌다.
본 발명의 다양할 실시예에 대한 설명을 진행하기에 앞서, 본 발명의 다양한 실시예가 실행될 수 있는 컴퓨터에 대한 설명이 먼저 제공된다. 비록 요구되지는 않지만, 본 발명은 프로그램 모듈과 같은 컴퓨터에 의해 실행되는 컴퓨터 실행가능 명령의 일반적인 관계에서 설명된다. 일반적으로, 프로그램은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 반복, 객체, 구성요소, 데이터 구조 등을 포함한다. 본 명세서에서 사용된 용어 "프로그램"은 단일 프로그램 모듈이거나 함께 작용하는 다중 프로그램 모듈일 수 있다. 본 명세서에서 사용된 용어 "컴퓨터" 및 "컴퓨팅 장치"는 개인용 컴퓨터(PC), 휴대용 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 프로그램 가능한 가전, 네트워크 PC, 미니컴퓨터, 타블렛(tablet) PC, 랩탑 컴퓨터, 마이크로프로세서 또는 마이크로콘트롤러를 구비한 가전, 라우터, 게이트웨이, 허브 등과 같이 하나 이상의 프로그램을 전자적으로 실행하는 임의의 장치를 포함한다. 본 발명은 또한, 통신 네트워크를 통해 링크되는 원격 처리 장치에 의해서 태스크가 수행되는 분산 컴퓨팅 환경에서도 채택될 수 있다. 분산 컴퓨팅 환경에서, 프로그램은 로컬 및 원격 메모리 저장 장치 양쪽에 있을 수 있다.
도 2를 참조하면, 그 위에 본 명세서에서 설명된 본 발명의 형태가 구현될 수 있는 컴퓨터(202)에 대한 기본 구성의 예가 도시된다. 가장 기본적인 구성에서, 컴퓨터(202)는 통상 최소한 하나의 처리 유닛(204) 및 메모리(206)를 포함한다. 처리 유닛(204)은 본 발명의 다양한 실시예에 따라 태스크를 수행하기 위해 명령을 실행한다. 이러한 태스크를 수행하는데 있어서, 처리 유닛(204)은 어떤 결과를 야기시키기 위해서 컴퓨터(202)의 다른 구성요소 및 컴퓨터(202)의 외부 장치에 전자 신호를 송신할 수 있다. 컴퓨터(202)의 정확한 구성 및 유형에 따라, 메모리(206)는 휘발성(RAM과 같은), 비휘발성(ROM 또는 플래시 메모리와 같은) 또는 그 둘의 조합일 수 있다. 이에 대한 가장 기본적인 구성이 도 2에 점선(208)으로 도시되어 있다.
컴퓨터(202)는 또한, 추가적인 특징/기능도 구비할 수 있다. 예를 들면, 컴퓨터(202)는 자기 또는 광학 디스크 또는 테이프를 포함하는 추가적인 저장기(착탈식(210) 및/또는 고정식(212))를 포함할 수 있으며, 다만 이에 한정되지는 않는다. 컴퓨터 저장 매체는 컴퓨터 실행 가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 포함하는 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 고정식 매체를 포함한다. 컴퓨터 저장 매체는, RAM, ROM, EEPROM, 플래시 메모리, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 저장기, 자기 카세트, 자기 테이프, 자기 디스크 저장기 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는데 사용될 수 있고, 컴퓨터(202)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하며, 다만 이에 한정되지 않는다. 이러한 임의의 컴퓨터 저장 매체는 컴퓨터(202)의 일부일 수 있다.
컴퓨터(202)는 또한, 바람직하게는 장치가 원격 컴퓨터(216)와 같은 다른 장치와 통신할 수 있게 하는 통신 연결(214)도 포함한다. 통신 연결은 통신 매체의 한 예이다. 통신 매체는 통상 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 반송파와 같은 변조된 데이터 신호나 다른 송신 메커니즘 내에 있는 다른 데이터로 구현되며, 임의의 정보 전달 매체를 포함한다. 예로서, 용어 "통신 매체"는 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함하며, 다만 이에 한정되지는 않는다. 본 명세서에서 사용된 용어 "컴퓨터 판독가능 매체"는 컴퓨터 저장 매체 및 통신 매체 모두를 포함한다.
컴퓨터(202)는 또한, 키보드/키패드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 입력 장치(218)도 포함할 수 있다. 디스플레이, 스피커, 프린터 등과 같은 출력 장치(220)도 또한 포함될 수 있다. 이러한 장치는 모두 당업계에 공지되어 있는바, 여기에서 길게 설명될 필요가 없다.
이하 설명에서, 본 발명은, 달리 표시되지 않는 한, 하나 이상의 컴퓨팅 장치에 의해 수행되는 작용 및 동작의 기호적 표시를 참조하여 설명될 것이다. 이와 같이, 때때로 컴퓨터 실행중이라고 지칭되는 이러한 작용 및 동작은 구조화 형태로 데이터를 나타내는 전기 신호를 컴퓨터의 처리 유닛이 조작하는 것을 포함한다. 이 조작은 컴퓨터의 메모리 시스템의 위치에서 데이터를 변환하거나 이를 유지하여, 당업자가 잘 이해할 수 있는 방식으로 컴퓨터의 동작을 재구성하거나 달리 변경한다. 데이터가 유지되는 데이터 구조는 데이터의 포맷에 의해 정의된 특정 성질을 갖는 메모리의 물리적 위치이다. 그러나, 본 발명이 전술한 관계에서 설명되고 있지만, 당업자는 이후 설명되는 다양한 작용 및 동작이 하드웨어로 구현될 수 있음을 잘 알 것이기 때문에 이에 한정되는 것을 의미하지 않는다.
본 발명의 실시예에서, 컴퓨터(202)와 같은 컴퓨터 시스템은 그래프 관리 시 스템들 간에 및/또는 내부에서 그래프 동기화를 용이하게 하는 그래프 동기화 구성요소를 포함한다. 특히, 그래프 동기화 구성요소는 검증 그래프 관리 시스템에서 순환적 그래프(cyclic graph)의 동기화를 용이하게 한다. 그래프 동기화 구성요소는 각 순환적 그래프를 비순환적 그래프 및 분할된 링크 또는 분할된 에지로 지칭되는 한 세트의 비인프라 링크(non-infrastructure links)를 포함하는 다중 분할부로 분할하여 검증 그래프 관리 시스템에서 순환적 그래프의 동기화를 용이하게 할 수 있다. 분할된 링크는, 순환적 그래프를 비순환적 그래프로 변환하기 위해서, 즉 순환적 그래프를 그의 비순환적 구성요소로 정리하기 위해서 순환적 그래프로부터 "절단"된 링크의 세트로서 이해될 수 있다.
그래프 동기화 구성요소에 의해 수행된 순환적 그래프의 분할은, 결과로서 나타난 비순환적 그래프가 특정 검증 그래프 관리 시스템에서 순환적 그래프에 대해 한 세트의 구성된 그래프 제약을 만족시킬 확률이 높게 되도록 이루어질 수 있는데, 예를 들면 그래프 요소(즉, 노드 및 링크) 생성 순서는, 링크에 의해 참조되는 각 노드가 링크 생성 시에 존재하도록 비순환적 그래프에 대해 결정될 수 있다. 일단 비순환적 그래프가 검증 그래프 관리 시스템에서 설정되면, 분할된 링크는 상대적으로 제약 위반 확률이 낮은 상태로 추가될 수 있어서, 상대적으로 높은 확률상태로 검증 그래프 관리 시스템에서 순환적 그래프의 동기화를 달성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 예시적인 고수준 컴퓨터 시스템 구조를 도시한다. 도 3에서, 그래프 동기화 구성요소(302)는 기본 그래프(306)를 관리하는 검증 그래프 관리 시스템(304) 및 목표 그래프(310)를 관리하는 그래프 관리 시 스템(308)과 상호작용한다. 그래프 동기화 구성요소(302), 그래프 관리 시스템(308) 및 검증 그래프 관리 시스템은 별개의 컴퓨터 또는 단일 컴퓨터(도 2의 컴퓨터(202)와 같은) 상에 상주할 수 있다. 반드시는 필요로 하는 것은 아니지만, 그래프 관리 시스템(308)은 검증 그래프 관리 시스템일 수 있다. 본 발명의 일 실시예에서, 그래프 동기화 구성요소(302)는 그래프 관리 시스템(308) 및/또는 검증 그래프 관리 시스템(304)에 병합될 수 있다. 본 발명의 일 실시예에서, 기본 그래프(306) 및 목표 그래프(310)는 동일한 검증 그래프 관리 시스템 또는 동일한 검증 그래프 관리 시스템의 다른 버전에 의해 관리될 수 있다. 명확성을 위해, 도 3이 단일 목표 그래프(310)를 도시하고 있지만, 당업자가 알 수 있는 것처럼, 본 발명의 일 실시예는 복수의 목표 그래프를 포함하고 처리할 수 있다.
그래프 동기화 구성요소(302)는, 검증 그래프 관리 시스템(304) 및 그래프 관리 시스템(308) 각각이 부가한 제약에 따라 기본 그래프(306) 및 목표 그래프(310)를 생성, 판독, 갱신 및 삭제할 수 있다. 본 발명의 일 실시예에서, 그래프 동기화 구성요소(302)의 태스크는 기본 그래프(306)를 목표 그래프(310)와 동기화시키는 것이다. 기본 그래프(306)는 널(null) 그래프(즉, 노드나 링크가 없음)일 수 있다. 기본 그래프(306)는 목표 그래프(310)의 하나 이상의 노드 및/또는 링크의 사본 또는 버전을 포함할 수 있다. 동기화 이후, 목표는 기본 그래프(306)가 최소한 목표 그래프(310)의 노드 및 링크 각각의 사본을 갖게 하는 것이다. 그래프 동기화 구성요소(302)의 예시적인 상세 설명은 도 4를 참조하여 이하 설명된다.
도 4는 본 발명의 일 실시예에 따른 예시적인 그래프 동기화 구성요소(402) 를 도시한다. 그래프 동기화 구성요소(402)는, 검증 그래프 관리 시스템(304)(도 3) 및 그래프 관리 시스템(308)과 같은 기본 및 목표 그래프를 포함하는 그래프 관리 시스템과 통신하기 위해 그래프 동기화 엔진(406)에 의해 사용되는 그래프 관리 시스템(GMS) 통신 모듈(404)을 포함한다. 그래프 관리 시스템 통신 모듈(404)은 그래프 관리 시스템과 메시지를 송신 및 수신하기 위한 그래프 관리 시스템(GMS) 송신 모듈(412) 및 그래프 관리 시스템 수신 모듈(414)은 물론, 검증 그래프 관리 시스템과 메시지를 송신 및 수신하기 위한 검증 그래프 관리 시스템(VGMS) 송신 모듈(408) 및 검증 그래프 관리 시스템 수신 모듈(410)을 포함하는 것으로 명백히 도시되어 있다. 그래프 관리 시스템 통신 모듈(404)은, 다른 그래프 동기화 구성요소를 포함하는 임의의 적절한 유형의 그래프 관리 시스템과 통신하기 위한 모듈을 더 포함할 수 있다.
그래프 동기화 엔진(406)은 기본 및 목표 그래프의 사본을 요청하고 수신하기 위해서 그래프 관리 시스템 통신 모듈(404)을 사용할 수 있다. 기본 및 목표 그래프로부터, 그래프 동기화 엔진(406)은 작업 그래프(416)를 생성할 수 있다. 작업 그래프(416)의 각 노드 및 링크는, 하나 이상의 그래프 동기화 태그(예, 데이터 필드)와 연관되어 있을 수 있는데, 예를 들면 "기본 그래프에 존재" 태그, "그래프 동기화 카테고리" 태그, "그래프 동기화 가중치" 태그, "분할된 링크" 태그, 및/또는 "직렬화 순서" 태그이다. 각 그래프 동기화 태그는 하나 이상의 속성 유형 및 값과 연관되어 있을 수 있다. 그래프 관리의 결과로서, 그래프 동기화 구성요소(402)는 자체가 한 가지 유형의 그래프 관리 시스템이 된다. 그래프 동기화 구성요소(402)는 검증 그래프 관리 시스템이 될 수 있지만, 그 경우, 그래프 동기화 구성요소(402)에 의해 강제되는 그래프 제약은, 그래프 동기화 구성요소(402)가 그 해결에 도움을 주고자 하는 그래프 복사 문제류를 방지하기에는 일반적으로 취약할 것이다.
그래프 동기화 엔진(406)은, 작업 그래프(416)의 노드 및 링크에 그래프 동기화 태그 및 그래프 동기화 태그 속성값을 할당할 수 있다. 그래프 동기화 엔진(406)은, 그래프 동기화 태그의 존재 및/또는 속성값의 함수로서 작업 그래프(416)을 분할할 수 있다. 그 다음 그래프 동기화 엔진(406)은 분할된 작업 그래프(416)로부터 기본 그래프(306)를 관리하는 검증 그래프 관리 시스템(304)(도 3)을 위한 그래프 직렬화(graph serialization)(418)를 생성할 수 있다. 그래프 직렬화(418)는, 검증 그래프 관리 시스템(304)에서 기본 그래프(306)를 목표 그래프(310)와 동기화하기 위한 그래프 요소 생성 순서를 규정할 수 있다.
그래프 직렬화(418)는 검증 그래프 관리 시스템(304)(도 3)이 이해하는(즉, 파싱할 수 있는) 포맷으로 저장될 수 있다. 대안적으로, 그래프 관리 시스템 통신 모듈(404)은 임의의 적절한 그래프 직렬화 포맷으로 그래프 직렬화(418)를 포맷팅할 수 있다. 적절한 그래프 직렬화 포맷의 예는, 경량 디렉토리 액세스 프로토콜 서버를 위한 LDAP 데이터 상호교환 포맷(LDIF) 및 구조화 질의어 서버를 위한 구조화 질의어(SQL) 스크립트를 포함하는데, 둘은 모두 당업계에 공지되어 있는바, 여기서 더 이상 상세한 설명을 필요로 하지 않는다.
그래프 동기화 구성요소(402)는 그래프 동기화 그래픽 사용자 인터페이스(GUI)(420)를 더 포함할 수 있다. 그래프 동기화 그래픽 사용자 인터페이스는, 예컨대, 작업 그래프(416)의 노드 및 링크와 그 관련 그래프 동기화 태그, 그래프 동기화 엔진(406)의 상태 및 진행, 작업 그래프(416)를 분할하고 그래프 직렬화(418)를 생성하기 위해 그래프 동기화 엔진(406)에 의해 사용되는 파라미터, 그래프 직렬화(418) 및 그래프 관리 시스템 통신 상태와 파라미터를 들 수 있는 그래프 동기화 구성요소(402) 속성을 디스플레이할 수 있다. 그래프 동기화 구성요소(402) 속성은 임의의 적절한 그래픽 표현으로 디스플레이될 수 있는데, 예를 들면 작업 그래프 링크는 그 분할된 상태(즉, 분할되거나 분할되지 않은) 및/또는 링크와 연관된 그래프 동기화 가중치에 해당하는 색상 및/또는 강조로서 표시될 수 있다.
컴퓨터 시스템 사용자는 그래프 동기화 구성요소(402)의 동작을 제어하기 위해서 그래프 동기화 그래픽 사용자 인터페이스(420)를 사용할 수 있다. 특히, 컴퓨터 시스템 사용자는 작업 그래프(416)를 자동으로 분할하고/분할하거나 작업 그래프(416)의 분할을 수동으로 조정하기 위해서 그래프 동기화 엔진(406)이 사용하는 파라미터 및 수식을 조정할 수 있다. 저수준 분할 파라미터는 물론 각각이 한 세트의 저수준 분할 파라미터와 연관된 "약절단(cut lightly)" 및 "강절단(cut severely)"과 같은 고수준 분할 설정은, 사용자가 선택할 수 있도록 제시될 수 있다.
그래프 동기화 구성요소(402)는 완전 자동 모드, 부분 자동 모드 및/또는 수동 모드로 실행될 수 있다. 수동 모드에서 그래프 동기화 구성요소(402)는, 컴퓨터 시스템 사용자가 사용할 수 있는 최대량의 정보를 작성할 수 있고, 주로 사용자 입력에 응답하여 그래프 동기화 그래픽 사용자 인터페이스(420)를 통해서 행동을 취할 수 있다. 부분 자동 모드에서, 그래프 동기화 구성요소(402)는, 주로 요약 수준 정보를 표시할 수 있고, 검증 그래프 관리 시스템에서 기본 그래프를 갱신하는 것과 같은 주요 행동에 대한 사용자 승인을 추구할 수 있다. 완전 자동 모드에서, 그래프 동기화 구성요소(402)는 진행 및/또는 상태와 같은 최소 정보를 표시할 수 있거나, 또는 그래프 동기화 그래픽 사용자 인터페이스가 완전 자동 모드에서는 비활성 상태일 수 있다.
그래프 동기화 구성요소(402)는 그래프 동기화 응용 프로그래밍 인터페이스(API)(422)를 더 포함할 수 있다. 그래프 동기화 응용 프로그래밍 인터페이스(422)는 컴퓨터 시스템 구성요소가 그래프 동기화 구성요소(402)를 구성하고 제어할 수 있게 한다. 본 발명의 일 실시예에 따른 예시적인 그래프 동기화 응용 프로그래밍 인터페이스는 도 13을 참조하여 이하 더 상세하게 설명된다.
도 5는 본 발명의 일 실시예에 따라 두 그래프를 동기화하는 예시적인 단계를 도시한다. 예를 들면, 도 5의 단계는 도 4의 그래프 동기화 구성요소(402)에 의해 수행될 수 있다. 단계(502)에서, 기본 그래프의 사본이 검색될 수 있다. 예를 들면, 그래프 동기화 엔진(406)은 도 3의 기본 그래프(306)를 요청하고 수신할 수 있다. 단계(504)에서, 목표 그래프의 사본이 검색될 수 있다. 예를 들면, 그래프 동기화 엔진(406)은 목표 그래프(310)를 요청하고 수신할 수 있다.
단계(506)에서, 작업 그래프(416)(도 4)가 생성될 수 있다. 예를 들면, 그래프 동기화 엔진(406)은 목표 그래프(310)(도 3)의 각 노드 및 링크를 가지고 작 업 그래프(416)를 예증할 수 있다. 작업 그래프(416)의 노드 및 링크에 태그를 붙이는 것 또한 이 때 발생할 수 있다. 예를 들면, 목표 그래프(310)에 존재하는 그래프 요소로서 기본 그래프(306)에도 존재하는 것은 작업 그래프(416)에서 "기본 그래프에 존재"로 태그가 붙여질 수 있다.
단계(508)에서, 작업 그래프(416)(도 4)는 비순환적 구성요소 및 한 세트의 분할된 링크를 포함하는 다중 분할부로 분할될 수 있다. "기본 그래프에 존재"로 태그가 붙여진 그래프 요소는 또한, 작업 그래프(416)로부터 분할되거나 제거된 것으로 취급될 수 있다. 본 발명의 일 실시예에 따라 작업 그래프(416)를 분할하는 예시적인 단계는 도 8을 참조하여 이하에서 더 상세하게 설명된다.
단계(510)에서, 분할된 작업 그래프(416)의 그래프 요소에 대해 그래프 직렬화 순서가 결정될 수 있다. 작업 그래프(416) 분할은 순서를 가질 수 있고, 그래프 직렬화 순서는 상기 작업 그래프(416) 분할의 순서에 해당할 수 있다. 예를 들면, 비순환적 구성요소의 그래프 요소는 그래프 직렬화 순서에서 분할된 링크 이전에 올 수 있다. 작업 그래프(416) 분할 내의 그래프 요소는 직렬화 순서를 가질 수 있는데, 예를 들면 노드 및/또는 링크와 연관된 "직렬화 순서" 태그에 의해 규정된 것과 같은 것이다. 단계(512)에서, 그래프 직렬화(418)는, 작업 그래프(416)로부터 결정된 그래프 직렬화 순서로 작업 그래프(416)의 그래프 요소를 직렬화함으로써 생성될 수 있다. 본 발명의 일 실시예에서, 그래프 직렬화 순서를 결정하는 것은 그래프 직렬화(418)를 생성하는 것에서 정수라 할 수 있다. 본 발명의 일 실시예에 따라 그래프 직렬화(418)를 생성하는 예시적인 단계는 도 12를 참조하여 이하 더 상세하게 설명될 것이다.
단계(514)에서, 그래프 직렬화(418)(도 4)가 검증 그래프 관리 시스템(304)(도 3)으로 업로드(upload)(즉, 통신)될 수 있다. 검증 그래프 관리 시스템(304)은, 목표 그래프(310) 노드 및 링크를 가지고 기본 그래프(306)를 갱신하기 위하여 종래의 방식으로 업로드된 그래프 직렬화를 처리할 수 있다. 본 발명의 일 실시예에서, 검증 그래프 관리 시스템(304)에 의하여 업로드된 그래프 직렬화를 종래의 방식으로 처리한 결과, 기본 그래프(306)는 목표 그래프(310)와 동기화된다.
작업 그래프(416)(도 4) 분할 및 직렬화를 더 상세하게 설명하기 전에, 본 발명의 일 실시예에 따른 예시적인 분할 및 직렬화 전략을 설명하는 것이 유용할 것이다. 도 6은 7개의 노드(602, 604, 606, 608, 610, 612, 614) 및 6개의 링크(616, 618, 620, 622, 624, 626)를 구비한 예시적인 방향성 비순환적 그래프를 도시한다. 노드(604, 606)는 각각 링크(616, 618)를 가지고 노드(602)로부터 링크한다. 노드(608, 610)는 각각 링크(620, 622)를 가지고 노드(604)로부터 링크한다. 노드(612, 614)는 각각 링크(624, 626)를 가지고 노드(606)로부터 링크한다. 비순환적 그래프(600)는 트리 유형의(tree type) 그래프이지만 트리 그래프 유형이 필수적인 제약은 아니다. 예를 들면, 노드(612)가 노드(602)로부터 직접 링크되었다면 그래프(600)는 여전히 비순환적일 것이다. 또한, 본 명세서에서 설명된 예시적인 그래프 각각이 방향성 링크(즉, 단순히 두 노드를 링크하는 것이 아니라 노드를 "어디로 링크" 또는 "어디로부터 링크"하는 링크)를 포함하지만, 본 발명의 실시예는 당업자에게 자명할 것처럼 이에 한정되지는 않는다.
링크(616, 618, 620, 622, 624, 626) 각각이 인프라 링크이고(즉, 링크(616)가 노드(604)의 생성의 일부로서 생성되고, 링크(618)는 노드(606) 생성의 일부로서 생성되고, 링크(620)는 노드(608)의 생성의 일부로서 생성되는 등) 제약은 링크가 존재하지 않는 노드로부터 생성될 수 없다는 것이면, 그래프(600)에 대해 가능한 노드 및 링크 생성 순서 중에서 오직 일부만이 유효하다. 예를 들면, 노드(604) 및 링크(616)는 노드(602) 이전에 생성될 수 없다. 마찬가지로, 노드(608) 및 링크(620)는 노드(604) 이전에 생성될 수 없다. 그러나, 예컨대 일단 노드(602)가 생성되었으면, 노드(604) 다음에 노드(606) 그 다음에 노드(608), 또는 노드(604) 다음에 노드(608) 그 다음에 노드(606), 또는 노드(606) 다음에 노드(604) 그 다음에 노드(608) 식으로 몇몇 순차적 유효 노드 생성 순서가 가능하다.
그래프(600)(및 임의의 적절한 비순환적 그래프)에 대한 유효 노드 생성 순서는, 적절한 루트 노드로부터 그래프(600)의 종래의 너비 우선 진행(breadth-first walk) 방식으로 그들의 너비 우선 수준에 따라 노드를 카테고리화하여 결정될 수 있다. 예를 들면, 임의의 노드로부터 노드(602)로 그래프(600)를 내려감으로써 그래프(600)의 적절한 루트 노드는 결정될 수 있다. 그래프(600)의 노드(602)가 너비 우선 진행의 첫 번째 수준에 있으면, 노드(604, 606)는 두 번째 수준에 있고 노드(608, 610, 612, 614)는 세 번째 수준에 있다. 이러한 카테고리화가 주어지면, 유효한 노드 생성 순서는, 너비 우선 수준이 늦은 노드보다 먼저 너비 우선 수준이 앞선 노드를 생성하도록 스케쥴링함으로써 결정될 수 있다. 그래프(600)의 경우, 예컨대 유효한 노드 생성 순서는, 먼저 노드(602)를 생성하고, 다음 노드(604, 606)(어느 것이 먼저든) 그 다음 노드(608, 610, 612, 614)(임의의 적절한 순서로)를 생성하도록 스케쥴링함으로써 결정될 수 있다.
그러나, 모든 그래프가 비순환적인 것은 아니다. 도 7은 비순환적 그래프(600)(도 6)의 노드(602, 604, 606, 608, 610, 612, 614) 및 링크(616, 618, 620, 622, 624, 626)를 가지면서 그래프(700)에서 순환(cycle) 또는 루프(loop)를 생성하는 노드(614)로부터 노드(602)로의 추가적인 링크(702)를 갖는(즉, 노드(602)로부터 노드(606)로 다음 노드(614)로 가고 다시 노드(602)로 돌아오는) 예시적인 방향성 순환적 그래프(700)를 도시한다. 링크(702)가 분할 가능하면(예를 들면, 비인프라 링크이거나 달리 비인프라 링크가 될 수 있으면), 그래프(700)로부터 링크(702)를 분할하면 순환적 그래프(700)를 비순환적 그래프(600)로 정리할 수 있다. 도 6을 참조하여 상술된 것과 같이, 순환적 그래프를 비순환적 구성요소로 줄이기 위해(예컨대, 순환적 그래프(700)에 대한 비순환적 그래프(600)) 링크를 분할하고, 비순환적 구성요소에 대한 유효한 노드 및 링크 생성 순서를 결정하고, 다음 노드 및 링크 생성 순서에 분할된 링크를 첨부함으로써(분할된 링크는 임의의 적절한 순서로 첨부될 수 있음), 순환적 그래프(700)(및 임의의 적절한 순환적 그래프)에 대한 유효 노드 및 링크 생성 순서가 결정될 수 있다.
그래프(700)는 링크(618), 링크(626) 및 링크(702)를 포함하는 하나 이상 다수의 링크를 분할함으로써 비순환적 그래프로 정리될 수 있다. 어느 링크 또는 링크들이 특정의 순환적 그래프로부터 분할될지는 링크가 분할 가능한지 여부, 링크를 달리 어떻게 카테고리화할지 및 링크를 분할함으로써 절단되는 그래프 순환의 개수와 같은 다양한 요인에 따라 달라질 수 있다. 예를 들면, 링크(618) 및 링크(702)가 인프라 링크이고 링크(626)는 아니면, 링크(618) 또는 링크(702)보다는 링크(626)가 분할을 위해 선택될 수 있다. 특정 링크를 분할하는 것이 다른 링크보다 더 많은 그래프 순환을 절단하면(즉, 링크가 더 많은 그래프 순환에 속하면), 더 많은 그래프 순환을 절단하는 링크가 분할을 위해 나머지 링크보다 보다 더 선택될 수 있다. 예를 들면, 도시된 것처럼, 그래프(700)의 링크(618, 626, 702) 각각은 단일 순환에 존재한다. 그러나, 노드(610)로부터 노드(614)로의 추가적인 링크가 있다면, 링크(702)는 두 개의 그래프 순환에 있을 것이고 링크(702)는 분할을 위해 그래프(700)의 나머지 링크보다 보다 더 선택될 수 있다.
예시적인 분할 및 직렬화 전략을 설명하였으므로, 이제 작업 그래프(416)(도 4)를 분할하기 위한 예시적인 단계가 더 상세하게 설명될 것이다. 도 8은 본 발명의 일 실시예에 따라 작업 그래프(416)를 분할하기 위한 예시적인 단계를 도시한다. 단계(802)에서, 작업 그래프(416)의 링크 중 하나 이상이, 하나 이상의 그래프 동기화 카테고리에 예컨대, 하나 이상의 그래프 동기화 태그를 링크에 연관시킴으로써 할당될 수 있다. 그래프 동기화 카테고리는 임의의 적절한 유형의 그래프에 적용 가능할 수 있는데 예컨대, "분할가능 링크" 및 "인프라 링크"이다. 그래프 동기화 카테고리는 또한, 특정 유형의 그래프에 특정적이 될 수도 있다. 예를 들면, 작업 그래프(416)가 경량 디렉토리 액세스 프로토콜(LDAP) 스키마를 나타내면, 적절한 그래프 동기화 카테고리는 "가능한 우세 링크(possible superior link)" 및 "시스템 가능한 우세 링크(system possible superior link)"를 포함한다.
단계(804)에서, 도 4의 작업 그래프(416)에서 강하게 연결된 구성요소(SCC)(각각의 분할된 링크를 제외)가 검출될 수 있다. 당업자에게 자명한 것처럼, 그래프에서 강하게 연결된 구성요소는, 각 노드가 서로 다른 서브그래프 노드로부터 도달 가능한 최대 서브그래프이다. 임의의 적절한 강하게 연결된 구성요소(SCC) 검출 알고리듬이, 본 발명의 일 실시예에 포함될 수 있다. 적절한 종래 방식의 강하게 연결된 구성요소 검출 알고리듬의 한 예가 본 명세서의 첨부 A에 포함되어 있다.
본 발명의 일 실시예에서, 그래프는 그래프에서 강하게 연결된 구성요소 각각에 대해 최소한 하나의 순환을 가진다. 단계(806)에서, 작업 그래프(416)(도 4)에 있는 강하게 연결된 구성요소의 카운트가 점검될 수 있다. 본 발명의 일 실시예에서, 강하게 연결된 구성요소의 카운트가 0이면, 각각의 분할된 링크를 제외한 작업 그래프(416)는 비순환적이고, 예컨대 도 5의 단계(510)와 같은 그래프 직렬화 단계로 동기화 절차가 진행될 수 있다. 강하게 연결된 구성요소의 카운트가 0보다 크면, 그 이상의 링크 분할이 요구될 수 있고 절차는 단계(808)로 진행할 수 있다.
단계(808)에서, 도 4의 작업 그래프(416)의 순환(각각의 분할된 링크 제외)은 계수(enumerate)될 수 있다. 작업 그래프(416)의 각각의 링크에 대하여, 링크가 존재하는 그래프 순환의 개수에 대해 카운트가 유지될 수 있다. 예를 들면, 카운트는 링크와 연관된 그래프 동기화 태그의 속성으로서 저장될 수 있다. 카운트는 순환 계수 동안 증가될 수 있거나 또는, 순환 계수 후 순환 계수 데이터로부터 계산될 수 있다.
본 발명의 일 실시예에서, 하나 이상의 강하게 연결된 구성요소를 구비한 그래프의 순환은, 변형된 깊이 우선 진행으로써 적절한 루트 노드로부터 계수될 수 있다. 예를 들면, 하나 이상의 강하게 연결된 구성요소의 임의의 노드는, 적절한 루트 노드일 수 있다. 종래의 깊이 우선 진행에 대한 변형이란 진행 객체가 노드보다는 링크를 방문하는 것 및 방문된 순환은, 순환의 이중 카운팅을 방지하기 위해 기록되는 것을 포함한다. 예시적인 그래프는 순환 계수의 상세한 설명을 도울 것이다.
도 9는 5개의 노드(902, 904, 906, 908, 910) 및 A, B, C, D, E, F, G, H로 라벨 붙여진 8개의 링크를 구비한 예시적인 방향성 순환적 그래프(900)를 도시한다. 노드(902)는 링크 A로써 노드(904)로 링크한다. 노드(904)는 각각 링크 B 및 링크 C를 가지고 노드(906, 908)로 링크한다. 노드(906)는 각각 링크 D 및 링크 E를 가지고 노드(902, 910)로 링크한다. 노드(908)는 각각 링크 F 및 링크 G를 가지고 노드(906, 910)로 링크한다. 노드(910)는 링크 H를 가지고 노드(902)로 링크한다. 그래프(900)는 초기에 단일의 강하게 연결된 구성요소로서 검출된다.
노드(902)에서 시작하여, 깊이 우선 진행은 링크 A를 통해 노드(904)로 진행할 수 있다. 다음 링크 B를 통해 노드(906)로 진행하고, 다음 링크 D를 통해 다시 노드(902)로 진행함으로써 제1 순환 ABD를 식별한다. 노드(906)로부터의 다음 선택은 노드(910)로 가는 링크 E일 수 있다. 다음 링크 H를 통해 다시 노드(902)로 진행함으로써 제2 순환 ABEH를 식별한다. 노드(904)로부터의 다음 선택은, 노드 (908)로 가는 링크 C일 수 있다. 다음 노드(906)로 가는 링크 F, 다음 링크 D를 통해 다시 노드(902)로 진행함으로써 제3 순환 ACFD를 식별한다. 나머지 순환 ACFEH 및 ACGH는, 마찬가지로 계수될 수 있으며 그 결과, 링크 A, B, C, D, E, F, G, H 각각에 대해 5, 2, 3, 2, 2, 2, 1, 3(즉, 링크 A는 5개의 그래프 순환에 속하고, 링크 B는 2개의 그래프 순환에 속하고, 링크 C는 3개의 그래프 순환에 속하는 등)인 전체 순환 카운트를 얻는다.
도 10은 6개의 노드(1002, 1004, 1006, 1008, 1010, 1012) 및 J, K, M, N, P, Q, R로 라벨 붙여진 7개의 링크를 구비한 예시적인 방향성 순환적 그래프(1000)를 도시한다. 그래프(1000)에서, 노드(1002)는 각각 링크 J 및 K를 가지고 노드(1004, 1006)에 링크한다. 노드(1004)는 링크 M을 가지고 노드(1008)에 링크하고 노드(1006)는 링크 N을 가지고 노드(1008)에 링크한다. 노드(1008)는 링크 P를 가지고 노드(1010)에 링크하고, 노드(1010)는 링크 R을 가지고 노드(1012)에 링크하고, 노드(1012)는 링크 Q를 가지고 노드(1008)에 다시 링크한다. 그래프(1000)의 노드(1008, 1010, 1012) 및 그 관련 링크는 강하게 연결된 구성요소로서 검출된다.
그래프(900)(도 9)에 대해 상술한 것과 유사한 방식으로, 노드(1002)로부터 그래프(1000)의 깊이 우선 진행을 수행하는데 있어서, 각각이 순환 PRQ를 포함하는 순환, 즉 JMPRQ 및 KNPRQ에 대해 두 개의 경로를 계수하는 것이 가능하다. 그러나, 본 발명의 일 실시예에서, 그래프(1000)의 링크 P, Q, R 각각에 대한 순환 카운트는 1이다. 예를 들면, 순차적으로 계수된 순환에서 시퀀스 PRQ를 인식하고 시퀀스의 반복에 대해 관련된 순환 카운트의 증가를 방지함으로써, 링크 P, R, Q에 대한 이중 카운트가 방지될 수 있다.
도 8을 다시 참조하면, 단계(808)에서 작업 그래프(416)(도 4)의 순환을 계수한 후, 절차는 단계(810)로 진행한다. 단계(810)에서, 그래프 동기화 가중치는 작업 그래프(416)의 각각의 링크(각각의 분할된 링크 제외)에 대해 결정될 수 있다. 예를 들면, 특정 링크에 대한 그래프 동기화 가중치는, 단계(808)에서 링크에 대해 결정된 순환 카운트, 또는 승수(multiplier) 및/또는 양 또는 음의 오프셋(offset)과 같은 링크에 대한 순환 카운트의 선형 변환, 또는 순환 카운트의 지수 함수와 같은 링크에 대한 순환 카운트의 비선형 변환과 동일할 수 있다. 각 링크에 대해 결정된 그래프 동기화 가중치는 링크와 관련된 그래프 동기화 태그에 저장될 수 있다.
각 그래프 동기화 카테고리는, 그 그래프 동기화 카테고리 내에 있는 링크에 대해서 그래프 동기화 가중치를 결정하기 위하여 사용될 관련 순환 카운트 변환을 구비할 수 있다. 예를 들면, 제1 그래프 동기화 카테고리는 제1 선형 순환 카운트 변환과 관련될 수 있고, 제2 그래프 동기화 카테고리는 제2 선형 순환 카운트 변환과 관련될 수 있고, 제3 그래프 동기화 카테고리는 비선형 순환 카운트 변환과 관련될 수 있다. 그래프 동기화 가중치는 그래프 동기화 카테고리 전체에서 비교 가능하거나 또는, 단지 관련 그래프 동기화 카테고리 내에서만 비교 가능할 수 있는데, 예를 들면 최적의 그래프 동기화 가중치를 결정하기 위한 목적을 위해 비교 가능할 수 있다.
단계(812)에서, 최적 가중치 부여된 링크는 작업 그래프(416)(도 4)로부터 분할될 수 있다. 작업 그래프(416)에서 최적 가중치 부여된 링크란, 가장 높은 값으로 결정된 그래프 동기화 가중치 또는 가장 낮은 가중치를 갖거나, 0과 같은 목표 그래프 동기화 가중치에 가장 근접한 값으로 결정된 가중치를 갖는 링크일 수 있다. 또한, 최적 가중치 부여되었다고 고려되기 위해서는, 결정된 그래프 동기화 가중치는 최소 임계치 위, 또는 최대 임계치 아래, 또는 그래프 동기화 가중치의 특정 범위 내에 있을 것이 요구될 수 있다.
작업 그래프(416)(도 4)의 각각의 링크를 최적 가중치 부여된 링크의 후보로서 고려하여 분할함은 물론, 최적 가중치 부여된 링크에 대한 후보는 하나 이상의 특정 링크 카테고리로 제한될 수 있는데, 예를 들면 후보는 비인프라 링크로 제한될 수 있다. 또한, 링크 그래프 동기화 카테고리는, 예컨대 순차적 순서인 순서를 가질 수 있고, 각 링크 그래프 동기화 카테고리는 후보 링크에 대해 순서대로 고려될 수 있다. 링크 그래프 동기화 카테고리는 부분적으로 순서화될 수 있다. 예를 들면 링크 그래프 동기화 카테고리의 각각이 고려되기 전에 적절한 최적 가중치 부여된 링크가 찾아지는 경우, 순서대로 된 링크 그래프 동기화 카테고리의 각각은 고려될 필요가 없다. 카테고리 내에서 링크와 관련된 그래프 동기화 가중치가 카테고리 전체에서 비교 가능한 경우, 복수의 링크 그래프 동기화 카테고리는 동시에 고려될 수 있다. 예를 들면, 적절한 최적 가중치 부여된 링크가 후보 링크에 대해서 각 링크 그래프 동기화 카테고리를 고려한 후에도 찾아지지 않고 그래프 동기화 구성요소(402)가 링크 그래프 동기화 카테고리 변경을 허용하도록 구성되는 경우, 링크의 그래프 동기화 카테고리는 변경될 수 있다(즉, 재카테고리화될 수 있다).
최적 가중치 부여된 링크는, "분할된 링크" 그래프 동기화 태그를 그 링크에 관련시킴으로써 또는 몇몇 다른 적절한 그래프 동기화 태그 또는 다른 적절한 분할 표시자(partitioning indicator)를 추가 또는 갱신시킴으로써 작업 그래프(416)(도 4)로부터 분할될 수 있다. 최적 가중치 부여된 링크를 작업 그래프(416)로부터 분할한 후, 절차는 필요한 경우, 작업 그래프(416)에서 남아있는 임의의 강하게 연결된 구성요소를 검출하고 링크를 더 분할하기 위해 단계(804)로 돌아갈 수 있다. 작업 그래프(416)로부터 분할된 링크의 세트는 작업 그래프(416)를 그 비순환적 구성요소로 정리하기 위해 요구되는 분할된 링크의 최소 세트일 수 있다.
분할된 작업 그래프(416)(도 4)를 직렬화하기 위한 예시적인 단계가 이제 더 상세하게 설명된다. 예시적인 그래프는 직렬화의 상세한 설명을 도울 것이다. 도 11은 본 발명의 일 실시예에 따라 분할된 예시적인 작업 그래프 링크(1100)를 도시한다(분할된 링크 도시 생략). 그래프(1100)는 3개의 분리된 비순환적 구성요소를 포함한다. 제1 비순환적 구성요소는 4개의 노드(1102, 1104, 1106, 1108)를 포함한다. 제2 비순환적 구성요소는 6개의 노드(1110, 1112, 1114, 1116, 1118, 1120)를 포함한다. 제3 비순환적 구성요소는 4개의 노드(1122, 1124, 1126, 1128)를 포함한다.
도 12는 본 발명의 일 실시예에 따라 그래프(1100)(도 11)를 직렬화하기 위한 예시적인 단계를 도시한다. 단계(1202)에서, 그래프(1100) 내에 아직 방문되지 않은 적절한 루트 노드가 선택될 수 있다. 예를 들면, 그래프(1100)의 적절한 루트 노드는 그래프(1100)의 임의의 노드(아직 방문되지 않은)로부터 노드(1102, 1110, 1122) 중 하나로 그래프를 내려가서 결정될 수 있다. 단계(1204)에서, 도 6을 참조하여 앞서 더 설명된 것처럼, 선택된 루트 노드와 연관된 비순환적 구성요소에서 각 노드의 너비 우선 수준은, 선택된 루트 노드로부터 비순환적 구성요소의 너비 우선 진행으로써 결정될 수 있다. 예를 들면, 너비 우선 수준은, 너비 우선 진행 동안 노드와 연관된 "직렬화 순서" 태그의 속성 내에 저장될 수 있다.
몇몇 그래프(예컨대, 도 11의 그래프(1100))에서, 단일 루트 노드로부터 그래프를 횡단(즉, 그래프의 각 노드를 방문)하는 것이 가능하지 않을 수 있다. 단계(1206)에서, 그래프(1100)의 노드 각각이 단계(1204)의 진행 동안 방문되었는지 여부가 결정될 수 있다. 그래프(1100)의 각 노드가 방문되었다면, 그래프(1100)에서 각 노드의 너비 우선 수준이 결정되었고 직렬화 절차는 단계(1208)로 진행할 수 있다. 그래프(1100)의 하나 이상의 노드가 아직 방문되지 않았다면, 본 발명의 일 실시예에서, 절차는 다른 너비 우선 진행을 위한 적절한 다른 루트 노드를 선택하기 위하여 단계(1202)로 돌아간다. 본 발명의 일 실시예에서, 적절한 루트 노드를 위한 후보는 종래의 그래프 동작을 사용하여 결정될 수 있는 것처럼, 다른 노드로부터 들어오는 링크가 없는 노드로 제한된다. 진행은 그래프(1100)의 각 노드가 방문될 때까지 계속될 수 있다.
단계(1208)에서, 분할된 작업 그래프(1100)(도 11)로부터 그래프 직렬화(418)(도 4)의 생성은 단계(1204)에서 결정된 그들의 너비 우선 수준에 따라 그래프(1100)의 노드 및 링크를 직렬화함으로써 시작할 수 있다. 그래프 직렬화(418)에 그래프(1100)의 노드 및 링크를 직렬화하는 것은, 그래프(1100)의 노드 및 링크에 대해 검증 그래프 관리 시스템(304)(도 3)이 이해하는 생성 판독, 갱신 및/또는 삭제 명령의 직렬화를 포함할 수 있다. 예를 들면, 그래프(1100)의 노드 및 관련 링크는 다음과 같이 그래프 직렬화(418)에 직렬화될 수 있다: 노드(1102, 1110, 1122)(임의의 적절한 순서) 다음, 노드(1104, 1106, 1112, 1114, 1124, 1126)(임의의 적절한 순서) 및 그와 관련된 링크, 다음 노드(1108, 1116, 1128)(임의의 적절한 순서) 및 그와 관련된 링크, 다음 노드(1118, 1120)(두 순서로) 및 그와 관련된 링크.
단계(1210)에서, 그래프(1100)(도 11)의 분할된 링크는 임의의 적절한 순서로 그래프 직렬화(418)(도 4)에 직렬화될 수 있다. 단계(1210) 이후, 본 발명의 일 실시예에서, 그래프 직렬화(418)는, 기본 그래프(306)(도 3)를 목표 그래프(310)에 동기화시키는데 적합한 그래프 직렬화를 포함하고 동기화 절차는 도 5의 단계(514)와 같은 검증 그래프 관리 시스템 업로드 단계로 진행할 수 있다.
도 13은 본 발명의 일 실시예에 따라 예시적인 그래프 동기화 응용 프로그래밍 인터페이스를 도시한다. 그래프 동기화 응용 프로그래밍 인터페이스(1300)는 분할 파라미터 설정 요소(1302), 분할 파라미터 획득 요소(1304), 그래프 분할 요소(1306), 그래프 직렬화 요소(1308) 및 그래프 동기화 요소(1310)를 포함한다. 각 응용 프로그래밍 인터페이스 요소(1302, 1304, 1306, 1308, 1310)는 컴퓨터 시스템 구성요소가 그래프 동기화 구성요소(402)(도 4)를 구성, 제어, 및/또는 상호작용할 수 있게 하는 방식을 규정하는 하나 이상의 인터페이스 규정을 포함할 수 있다. 당업자에게 자명한 것처럼, 인터페이스 규정은 함수 호출 규정, 프로그램 객체 규정, 요청/응답 메시지 쌍과 같은 메시지 규정, 및/또는 다른 임의의 적절한 프로그래밍 인터페이스 규정을 포함할 수 있다.
분할 파라미터 응용 프로그래밍 인터페이스 설정 요소(1302)는, 작업 그래프(416)를 분할할 때 컴퓨터 시스템 구성요소가 그래프 동기화 구성요소(402)(도 4)에 의해 사용되는 하나 이상의 분할 파라미터를 설정할 수 있게 한다. 인터페이스 규정 파라미터는 링크 그래프 동기화 카테고리(순서화 및 비순서화), 각 링크 그래프 동기화 카테고리와 연관된 순환 카운트 변환, 그래프 동기화 가중치가 링크 그래프 동기화 카테고리 내에서 또는 전체에서 비교가능한지에 대한 표시자(indicator), 목표 가중치와 최대 및 최소 가중치 임계치와 같은 최적의 그래프 동기화 가중치를 결정하기 위한 조건 및 규정된 카테고리의 링크가 다른 규정된 카테고리로 재카테고리화될 수 있는지에 대한 표시자를 포함할 수 있다. 예를 들면, 각 링크 그래프 동기화 카테고리와 연관된 순환 카운트 변환은 종래의 스프레드시트 응용 프로그램 또는 종래의 프로그래밍 언어에 의해 사용된 것과 같은 문자열을 정의하는 수식, 또는 임의의 적절한 변환 규정으로써 단순한 승수 및 오프셋으로서(선형 변환에 대해) 규정될 수 있다.
분할 파라미터 응용 프로그래밍 인터페이스 획득 요소(1304)는 컴퓨터 시스템 구성요소가 그래프 동기화 구성요소(402)에 의해 사용되는 하나 이상의 분할 파라미터를 검색할 수 있게 한다. 분할 파라미터 획득 요소(1304)를 위한 인터페이스 규정 파라미터는 대기 및 타임아웃 플래그와 같은 병렬 프로그래밍(멀티스레드) 행위 규정자(behavior specifier)는 물론 어느 분할 파라미터를 검색할지에 대한 표시자를 포함할 수 있다.
그래프 분할 응용 프로그래밍 인터페이스 요소(1306)는 컴퓨터 시스템 구성요소가 본 발명의 일 실시예에 따라 그래프 동기화 구성요소(402)에 의해 분할된 그래프를 가지게 한다. 인터페이스 규정 파라미터는 분할될 그래프를 포함할 수 있다. 예를 들면, 그래프의 분할된 링크는 그와 관련된 "분할된 링크" 그래프 동기화 태그를 가질 수 있다.
그래프 직렬화 응용 프로그래밍 인터페이스 요소(1308)는, 본 발명의 일 실시예에 따라 컴퓨터 시스템 구성요소가 그래프 동기화 구성요소(402)에 의해 직렬화된 그래프를 가지게 한다. 인터페이스 규정 파라미터는 직렬화될 그래프 및 원하는 직렬화 유형을 포함할 수 있다. 예를 들면, 직렬화된 그래프는 노드 및 링크의 순서화된 목록으로서 제공되거나, 또는 노드 및 링크 생성 명령과 같은 적절한 LDIF 요소를 포함하는 LDAP 데이터 상호교환 포맷(LDIF) 파일에 대한 참조로서 제공될 수 있다.
그래프 동기화 응용 프로그래밍 인터페이스 요소(1310)는, 본 발명의 일 실시예에 따라 컴퓨터 시스템 구성요소가 그래프를 동기화시킬 수 있게 한다. 인터페이스 규정 파라미터는 기본 및 목표 그래프에 대한 참조를 포함할 수 있다. 예를 들면, 그래프 참조는 네트워크 호스트 이름 또는 균일 자원 로케이터(universal resource locator, URL)와 같은 그래프 관리 시스템에 대한 참조, 및 문자숫자식 문자열 또는 유니버설 고유 식별자(universal unique identifier, UUID)와 같은 그래프 이름을 포함할 수 있다.
본 명세서에서 인용된 출판물, 특허 출원 및 특허를 포함하는 모든 참조 문헌은, 각 참조 문헌이 개별적으로 또 구체적으로 참조로서 포함되는 것으로 지시되 는 것과 같은 정도로, 그 전체가 본 명세서에 서술된 것과 같은 정도로 참조로서 포함된다.
본 발명을 설명하는 문맥에서(특히 첨부된 특허 청구의 범위의 문맥 상) 용어 "하나" 및 "일" 및 "그" 및 유사 지시어의 사용은 본 명세서에서 달리 지시되거나 문맥 상 명확하게 부인되지 않으면 단일 및 복수를 모두 포함하는 것으로 고려되어야 한다. 용어 "포함하는", "구비하는", "갖는"은 달리 언급되지 않는 한 개방형 용어(즉, "이에 한정되지는 않지만 포함하는"을 의미함)로서 고려되어야 한다. 본 명세서의 값의 범위 사용은 본 명세서에서 달리 지시되지 않는 한 단지 범위 내에 들어 있는 각각의 개별적 값을 개별적으로 참조하는 간단한 방법을 수행하기 위한 것으로 의도되며, 각각의 개별적 값은 본 명세서에서 그들이 개별적으로 인용된 것처럼 명세서에 포함된다. 본 명세서에서 설명된 모든 방법은 본 명세서에서 달리 지시되거나 문맥 상 명확하게 부인되지 않으면 임의의 적절한 순서로 수행될 수 있다. 본 명세서에서 제공된 임의의 예 및 모든 예, 또는 예시적인 언어(예컨대, "와 같은")는 단지 본 발명을 좀 더 명백하게 설명하기 위한 것으로 의도되며, 달리 청구되지 않는 한 본 발명의 범위에 한정을 주지 않는다. 명세서의 언어는 어떠한 언어도 임의의 청구되지 않은 요소를 본 발명의 실시에 필수적인 것으로 지시하는 것으로 고려되어서는 안 된다.
본 발명의 바람직한 실시예는 본 발명을 실시하기 위해서, 발명자에게 알려진 최선의 모드를 포함하여 본 명세서에서 설명되었다. 이러한 바람직한 실시예의 변형은 전술한 설명을 읽은 당업자에게 자명하게 될 수 있을 것이다. 발명자는 당 업자가 그러한 변형을 적절하게 채택할 것으로 기대하고, 발명자는 본 발명이 본 명세서에 구체적으로 설명된 것과 달리 실시될 수 있다고 생각한다. 따라서, 본 발명은 적용 가능한 법에 의해 허용되는 대로 본 명세서에 첨부된 특허 청구 범위에 인용된 요지의 모든 변형 및 균등물을 포함한다. 나아가, 모든 가능한 변형의 상술된 구성요소의 임의의 조합은 본 명세서에 달리 지시되거나 문맥 상 명백하게 부인되지 않는 한 본 발명에 포함된다.
본 발명에 따르면, 순환적 그래프가 분할되어 검증 그래프 관리 시스템에 순환적 그래프를 복제할 수 있다.
<부록 A>
이중그래프에서 강한 구성요소 찾기
이중그래프(digraph)의 G의 강한 구성요소 S는, G의 강하게 연결된 서브그래프로서 가능한 한 큰 것이다. 즉, G로부터 임의의 노드 또는 에지가 S에 더 추가되면, 이는 더 이상 강하게 연결된 것이 아닐 것이다. 이중그래프는 임의의 두 정점 u 및 v에 대해 정점 u로부터 정점 v로의 방향성 경로(directed path)가 있으면 강하게 연결된 것이다(정점 v로부터 정점 u로의 방향성 경로가 있어도 또한 그렇다). 이 알고리듬은 그래프의 모든 방향성 구성요소를 찾는다.
이 알고리듬은 방향성 에지로 표현되는 일방통행 거리 및 두개의 방향성 에지(u,v) 및 (v,u)로 표현되는 정점 u 및 v에 해당하는 교차로 사이의 양방향 거리를 갖는 도로 시스템의 통행량 엔지니어의 모델에서 사용될 수 있다. 하나의 거리 가 공사를 위해 폐쇄되었을 때 전체 도로 시스템이 접근 가능한지 아닌지의 여부를 결정하는 문제는 해당 에지가 삭제된 그래프가 강하게 연결된 것인지 결정하는 것과 등가이다. 이를 수행하기 위한 더 간단한 알고리듬에 대해 끝에 있는 해설을 보자.
알고리듬은 방향성 순환(제1 정점이 최종 정점과 같지만 다른 반복 정점은 없는 방향성 폐쇄 경로)을 찾는 것에 기초한다. 방향성 순환은, 임의의 노드로부터 임의의 다른 노드에 도달하기 위해서 순환이 이어질 수 있기 때문에 강하게 연결된 것이다. 강한 구성요소 내, 임의의 두 정점 u 및 v가 u로부터 v로의 방향성 경로 다음에 정점 v로부터 다시 정점 u로의 방향성 경로로 형성된 방향성 순환 상에 있기 때문에 모든 구성요소는 이 방식으로 찾아질 수 있다.
1. 초기 설정:
a. 에지의 일부 또는 전부가 방향성인 그래프/이중그래프. 임의의 비 방향성 에지(u,v)를 두 개의 방향성 에지 (u,v) 및 (v,u)로 대체한다. 임의 의 정점 s에서 탐색을 시작한다.
b. 구성요소들은 집합 S1, S2, S3,...에 저장될 것이다.
2. 반복:
a. 에지 방향을 따라 탐색 경로를 생성하는 s로부터 변형된 깊이 우선 탐 색(depth first searching, DFS)(역추적을 포함)을 수행한다. 정점 v가 탐 색 경로에 추가될 때마다 탐색 경로 상에 v로부터 정점 w로의 방향성 에지가 이미 있는지 점검한다(그리하여 방향성 순환을 검출한다).
b. 방향성 순환 C가 방향성이면 C의 노드 및 에지를 다음과 같이 (DFS 탐색 경로를 변경하지 않으면서) 구성요소의 집합 Si 중 하나에 추가한다.
- C가 임의의 이미 정의된 집합 Si의 임의의 노드와 공통으로 노드를 가지지 않으면 새로운 집합 Si에 C의 노드 및 에지를 넣거나,
- C가 단지 하나의 이미 정의된 Si와 공통으로 노드를 가지면 이 집합 Si에 C의 노드 및 에지를 넣거나,
- C가 둘 이상의 이미 정의된 Si와 공통으로 노드를 가지면 그들 중 하 나로 그들 모두를 병합하고, C의 노드 및 에지를 이 집합에 추가 한다.
- (a)로 돌아가서 깊이 우선 탐색을 계속한다
c. 깊이 우선 탐색이 종료하면(시작 노드 s로 역추적했고 더 이상의 탐색이 불가능하기 때문),
- 모든 노드가 방문되었으면(Si 중 하나에 있으면), 결론으로 가거나,
- 방문되지 않는 노드를 선택하여 DFS를 위한 새로운 시작 노드인 s로 칭한다. 다음 위 2(a) 부분으로 간다.
2. 결론:
찾아진 개별 집합의 각각은 강한 구성요소이다(또한 끝의 해설을 보자).
해설:
(a) 이 알고리듬은 그 노드가 임의의 방향성 순환에 포함되지 않는 경우, 그 단일 노드를 강한 구성요소로 식별할 것이다.
(b) 상이한 두 개의 강한 구성요소 Si의 노드를 연결하는 에지는 어떠한 Si에도 포함되지 않을 것이다(그러므로 이러한 경우에, 모든 강한 구성요소를 병합하는 것은 원래의 이중 그래프를 생성하지 않을 것이다.
(c) 도로 엔지니어의 문제를 해결하기 위해서 더 간단한 알고리듬이 사용될 수 있다. 문제는, 하나의 방향성 에지 (u,v)(일방통행 거리를 나타내는)가 제거된 경우, 강하게 연결된 이중그래프(도로 시스템을 나타내는)가 여전히 강하게 연결된 것인지 아닌지의 여부를 점검하는 것이다. 이를 수행하기 위해서, u로부터 시작하고, 에지 (u,v)를 사용하지 않는 변형된 깊이 우선 탐색을 수행한다. 이 탐색에서 정점 v가 찾아지면 이는 여전히 강하게 연결된 것이다.

Claims (37)

  1. 검증 그래프 관리 시스템에 의해 관리되는 순환적 기본 그래프(cyclic base graph)의 동기화를 용이하게 하기 위한 방법을 수행하기 위한 컴퓨터 실행가능 명령어들을 저장하는 컴퓨터 판독 가능 기록 매체로서,
    상기 컴퓨터 실행가능 명령어들은 그래프 동기화 엔진을 포함하는 그래프 동기화 구성요소를 가지는 컴퓨팅 시스템에 의해 실행되며,
    상기 방법은,
    상기 그래프 동기화 구성요소가 검증 그래프 관리 시스템에 의해 관리되고 목표 그래프로 동기화될 기본 그래프를 요청하고 수신하는 단계;
    상기 그래프 동기화 구성요소가 그래프 관리 시스템에 의해 관리되는 상기 목표 그래프를 요청하고 수신하는 단계;
    상기 그래프 동기화 엔진이 노드들 및 링크들을 포함하는 그래프 요소들을 포함하는 상기 목표 그래프로부터 순환적 작업 그래프(cyclic working graph)를 생성하는 단계 - 상기 순환적 작업 그래프는 상기 목표 그래프의 적어도 모든 노드 및 모든 링크를 포함하고, 상기 목표 그래프의 적어도 하나의 노드 또는 링크는 상기 기본 그래프에 없음 -;
    상기 그래프 동기화 엔진이 하나 이상의 태그를 대응하는 그래프 요소들에 연관시키는 단계 - 상기 하나 이상의 태그는 대응하는 그래프 요소가 상기 기본 그래프에 존재하는지 여부를 특정하는 제1 태그, 상기 대응하는 그래프 요소와 연관된 가중치를 특정하는 제2 태그 및 대응하는 그래프 요소들을 동기화시키기 위한 순서에 대응하는 동기화 태그를 포함함 -;
    상기 그래프 동기화 엔진이 상기 그래프 요소들 중 하나 이상에 연관된 하나 이상의 그래프 동기화 태그에 적어도 부분적으로 기초하여 상기 순환적 작업 그래프를 분할(partioning)하는 단계 - 상기 순환적 작업 그래프를 분할하는 단계는 상기 순환적 작업 그래프의 하나 이상의 링크를 상기 순환적 작업 그래프의 비순환적 구성요소로부터 분할하고 그에 의해 분리시켜, 상기 분할하는 단계가 상기 순환적 작업 그래프의 비순환적 구성요소(acyclic component) 및 상기 순환적 작업 그래프의 분할된 링크들의 세트를 포함하는 복수의 분할 구성요소를 생성하게 됨 -; 및
    상기 분할하는 단계에 적어도 부분적으로 기초하여 상기 순환적 작업 그래프의 상기 복수의 그래프 요소에 대한 직렬화 순서(serialization order)를 결정하는 단계; 및
    상기 결정된 직렬화 순서를 가지는 상기 순환적 작업 그래프의 직렬화를 생성하는 단계를 포함하는 컴퓨터 판독 가능 기록 매체.
  2. 제1항에 있어서,
    상기 순환적 작업 그래프는 상기 목표 그래프 내에서 식별된 각 그래프 요소를 포함하는, 컴퓨터 판독 가능 기록 매체.
  3. 제1항에 있어서,
    상기 방법은,
    상기 순환적 작업 그래프의 직렬화를 상기 검증 그래프 관리 시스템으로 전달(communicating)하는 단계 - 상기 순환적 작업 그래프의 직렬화는 상기 기본 그래프의 동기화를 위해 상기 검증 그래프 관리 시스템에 의해 사용됨 - 를 더 포함하는, 컴퓨터 판독 가능 기록 매체.
  4. 제1항에 있어서,
    상기 직렬화 순서는 그래프 요소 생성 순서에 대응하는, 컴퓨터 판독 가능 기록 매체.
  5. 제1항에 있어서,
    상기 직렬화 순서는 상기 순환적 작업 그래프의 상기 비순환적 구성요소의 상기 그래프 요소들의 순서에 또한 대응하는, 컴퓨터 판독 가능 기록 매체.
  6. 제1항에 있어서,
    상기 순환적 작업 그래프의 상기 복수의 그래프 요소에 대한 상기 직렬화 순서를 결정하는 단계는 상기 순환적 작업 그래프의 상기 비순환적 구성요소의 상기 복수의 그래프 요소에 대한 직렬화 순서를 결정하는 단계를 포함하고,
    상기 순환적 작업 그래프의 상기 비순환적 구성요소의 상기 복수의 그래프 요소의 각각에 대한 상기 직렬화 순서는 상기 순환적 작업 그래프의 상기 비순환적 구성요소의 너비 우선 진행에서(in a breadth-first walk) 상기 그래프 요소의 수준(level)에 대응하는, 컴퓨터 판독 가능 기록 매체.
  7. 제1항에 있어서,
    상기 순환적 작업 그래프의 상기 분할된 링크들의 세트는 상기 순환적 작업 그래프의 상기 비순환적 구성요소를 결정하기 위해 상기 순환적 작업 그래프의 상기 복수의 링크로부터 분할되는, 컴퓨터 판독 가능 기록 매체.
  8. 제1항에 있어서,
    상기 순환적 작업 그래프의 상기 분할된 링크들의 세트의 각 링크는 상기 링크에 대해 결정된 가중치의 함수로서 상기 순환적 작업 그래프의 상기 복수의 링크로부터 선택되는, 컴퓨터 판독 가능 기록 매체.
  9. 제1항에 있어서,
    상기 방법은,
    상기 순환적 작업 그래프의 적어도 하나의 순환을 계수(enumerate)하는 단계; 및
    상기 순환적 작업 그래프의 적어도 하나의 링크의 각각에 대한 가중치를 결정하는 단계를 더 포함하고,
    상기 링크에 대해 결정된 상기 가중치는 상기 링크가 속하는 그래프 순환의 개수의 함수인, 컴퓨터 판독 가능 기록 매체.
  10. 제1항에 있어서,
    상기 방법은,
    상기 순환적 작업 그래프의 0 이상의 강하게 연결된 구성요소(strongly connected components; SCC)를 검출하는 단계 - 각각의 강하게 연결된 구성요소는 복수의 서브그래프 노드를 포함하는 상기 순환적 작업 그래프의 최대 서브패스를 포함하고, 모든 서브그래프 노드들은 다른 서브그래프 노도들로부터 도달가능함 -; 및
    0 개의 강하게 연결된 구성요소가 검출되는 경우, 상기 분할하는 단계로부터 진행하는 단계를 더 포함하는, 컴퓨터 판독 가능 기록 매체.
  11. 제1항에 있어서,
    상기 순환적 작업 그래프는 경량 디렉토리 액세스 프로토콜(lightweight directory access protocol; LDAP) 스키마에 대응하고,
    상기 직렬화 순서는 LDAP 데이터 상호교환 포맷(LDIF) 파일에 있는 엔트리의 순서에 대응하는, 컴퓨터 판독 가능 기록 매체.
  12. 그래프 동기화 엔진을 포함하는 그래프 동기화 구성요소를 가지는 컴퓨팅 시스템에 의해 구현되는, 검증 그래프 관리 시스템에 의해 관리되는 순환적 기본 그래프의 동기화를 용이하게 하기 위한 컴퓨터-구현 방법으로서,
    상기 방법은,
    상기 그래프 동기화 구성요소가 검증 그래프 관리 시스템에 의해 관리되고 목표 그래프로 동기화될 기본 그래프를 요청하고 수신하는 단계;
    상기 그래프 동기화 구성요소가 그래프 관리 시스템에 의해 관리되는 상기 목표 그래프를 요청하고 수신하는 단계;
    상기 그래프 동기화 엔진이 노드들 및 링크들을 포함하는 그래프 요소들을 포함하는 상기 목표 그래프로부터 순환적 작업 그래프를 생성하는 단계 - 상기 순환적 작업 그래프는 상기 목표 그래프의 적어도 모든 노드 및 모든 링크를 포함하고, 상기 목표 그래프의 적어도 하나의 노드 또는 링크는 상기 기본 그래프에 없음 -;
    상기 그래프 동기화 엔진이 하나 이상의 태그를 대응하는 그래프 요소들에 연관시키는 단계 - 상기 하나 이상의 태그는 대응하는 그래프 요소가 상기 기본 그래프에 존재하는지 여부를 특정하는 제1 태그, 상기 대응하는 그래프 요소와 연관된 가중치를 특정하는 제2 태그 및 대응하는 그래프 요소들을 동기화시키기 위한 순서에 대응하는 동기화 태그를 포함함 -;
    상기 그래프 동기화 엔진이 상기 그래프 요소들 중 하나 이상에 연관된 하나 이상의 그래프 동기화 태그에 적어도 부분적으로 기초하여 상기 순환적 작업 그래프를 분할하는 단계 - 상기 순환적 작업 그래프를 분할하는 단계는 상기 순환적 작업 그래프의 하나 이상의 링크를 상기 순환적 작업 그래프의 비순환적 구성요소로부터 분할하고 그에 의해 분리시켜, 상기 분할하는 단계가 상기 순환적 작업 그래프의 비순환적 구성요소 및 상기 순환적 작업 그래프의 분할된 링크들의 세트를 포함하는 복수의 분할 구성요소를 생성하게 됨-; 및
    상기 분할하는 단계에 적어도 부분적으로 기초하여 상기 순환적 작업 그래프의 상기 복수의 그래프 요소에 대한 직렬화 순서를 결정하는 단계;
    상기 결정된 직렬화 순서를 가지는 상기 순환적 작업 그래프의 직렬화를 생성하는 단계를 포함하는 컴퓨터-구현 방법.
  13. 프로세서 및 그래프 동기화 구성요소를 포함하는 컴퓨터화된 시스템으로서,
    상기 그래프 동기화 구성요소는, 적어도,
    복수의 그래프 요소를 가지는 순환적 그래프를 복수의 분할부로 분할하고 - 상기 복수의 분할부는 상기 순환적 그래프의 비순환적 구성요소 및 분할된 링크들의 세트를 포함함 -,
    상기 복수의 그래프 요소의 대응하는 그래프 요소들로 하나 이상의 태그를 동기화하고 - 상기 하나 이상의 태그는 대응하는 그래프 요소가 기본 그래프에 존재하는지 여부를 특정하는 제1 태그, 상기 대응하는 그래프 요소와 연관된 가중치를 특정하는 제2 태그 및 대응하는 그래프 요소들을 동기화시키기 위한 순서에 대응하는 동기화 태그를 포함함 -,
    상기 순환적 그래프의 상기 복수의 그래프 요소에 대한 직렬화 순서를 결정하도록 구성되고,
    상기 직렬화 순서는 상기 복수의 분할부의 순서에 대응하며,
    상기 컴퓨터화된 시스템은, 실행될 때 제12항에 기재된 방법을 구현하는 컴퓨터 실행가능 명령어들을 저장하고 있는 컴퓨터화된 시스템.
  14. 제13항에 있어서,
    상기 기본 그래프를 관리하는 제1 그래프 관리 시스템; 및
    상기 목표 그래프를 관리하는 제2 그래프 관리 시스템
    을 더 포함하고,
    상기 그래프 동기화 구성요소는, 적어도,
    상기 제1 그래프 관리 시스템으로부터 상기 기본 그래프를 검색하고,
    상기 제2 그래프 관리 시스템으로부터 상기 목표 그래프를 검색하도록 더 구성되고,
    상기 순환적 그래프는 상기 기본 그래프에는 없는 상기 목표 그래프의 각각의 그래프 요소를 포함하는, 컴퓨터화된 시스템.
  15. 제13항에 있어서,
    상기 순환적 그래프의 상기 복수의 그래프 요소에 대한 상기 직렬화 순서를 결정하는 것은 상기 순환적 그래프의 상기 비순환적 구성요소의 상기 복수의 그래프 요소에 대한 직렬화 순서를 결정하는 것을 포함하고,
    상기 순환적 그래프의 상기 비순환적 구성요소의 상기 복수의 그래프 요소의 각각에 대한 상기 직렬화 순서는 상기 순환적 그래프의 상기 비순환적 구성요소의 너비 우선 진행에서 상기 그래프 요소의 수준에 대응하는 컴퓨터화된 시스템.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
KR1020050031578A 2004-05-21 2005-04-15 그래프 분석 및 동기화를 위한 방법 및 시스템 KR100970823B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US57328804P 2004-05-21 2004-05-21
US60/573,288 2004-05-21
US10/918,776 2004-08-13
US10/918,776 US7614037B2 (en) 2004-05-21 2004-08-13 Method and system for graph analysis and synchronization

Publications (2)

Publication Number Publication Date
KR20060045780A KR20060045780A (ko) 2006-05-17
KR100970823B1 true KR100970823B1 (ko) 2010-07-16

Family

ID=35058656

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050031578A KR100970823B1 (ko) 2004-05-21 2005-04-15 그래프 분석 및 동기화를 위한 방법 및 시스템

Country Status (4)

Country Link
US (1) US7614037B2 (ko)
EP (1) EP1605373B1 (ko)
JP (1) JP4738885B2 (ko)
KR (1) KR100970823B1 (ko)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8756044B2 (en) * 2005-05-31 2014-06-17 The Mathworks, Inc. Graphical partitioning for parallel execution of executable block diagram models
US7716630B2 (en) * 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
US8181150B2 (en) * 2006-05-12 2012-05-15 The Mathworks, Inc. System and method for synchronized workflow management
US7478118B2 (en) * 2006-06-29 2009-01-13 Research In Motion Limited Method and apparatus for synchronizing of databases connected by wireless interface
EP2050013A4 (en) 2006-08-10 2010-01-06 Ab Initio Software Llc DISTRIBUTION SERVICES IN DIAGRAM-BASED CALCULATIONS
JP4635987B2 (ja) * 2006-08-30 2011-02-23 日本電気株式会社 フローダイアグラム編集装置、フローダイアグラム編集方法、及びプログラム
EP1926019B1 (de) * 2006-11-24 2012-05-16 Tangro Software Components GmbH Datenaustauschverfahren und Steuerverfahren zwischen Softwarebausteinen sowie wiederverwendbare Softwarebausteine
KR101758670B1 (ko) 2007-07-26 2017-07-18 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
US8713533B2 (en) * 2007-10-25 2014-04-29 Sap Ag Module-code verification layer to automatically validate user input
JP5605571B2 (ja) * 2008-10-07 2014-10-15 国立大学法人お茶の水女子大学 部分グラフ検出装置、部分グラフ検出方法、プログラム、データのデータ構造、及び情報記憶媒体
KR20150038758A (ko) 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US9569282B2 (en) 2009-04-24 2017-02-14 Microsoft Technology Licensing, Llc Concurrent mutation of isolated object graphs
US8832156B2 (en) * 2009-06-15 2014-09-09 Microsoft Corporation Distributed computing management
JP5065344B2 (ja) * 2009-07-14 2012-10-31 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
US8667329B2 (en) 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
US8239404B2 (en) 2010-06-10 2012-08-07 Microsoft Corporation Identifying entries and exits of strongly connected components
EP2583168B1 (en) 2010-06-15 2017-11-08 Ab Initio Technology LLC Dynamically loading graph-based computations
US8938690B1 (en) 2010-11-15 2015-01-20 Cisco Technology, Inc. Intelligent social collaboration hover card
US9207832B1 (en) 2010-11-15 2015-12-08 Cisco Technology, Inc. Intelligent social collaboration watchlist that visually indicates an order of relevance
US8954863B2 (en) 2010-11-15 2015-02-10 Cisco Technology, Inc. Intelligent social collaboration unified media
US9116968B2 (en) 2011-06-30 2015-08-25 Bmc Software, Inc. Methods and apparatus related to graph transformation and synchronization
US9355478B2 (en) * 2011-07-15 2016-05-31 Hewlett Packard Enterprise Development Lp Reflecting changes to graph-structured data
US9798947B2 (en) * 2011-10-31 2017-10-24 Applied Materials, Inc. Method and system for splitting scheduling problems into sub-problems
US9064240B2 (en) * 2012-04-27 2015-06-23 Hewlett-Packard Development Company, L.P. Application based on node types associated with implicit backtracking
US8533182B1 (en) * 2012-05-31 2013-09-10 David P. Charboneau Apparatuses, systems, and methods for efficient graph pattern matching and querying
US9411555B2 (en) * 2012-10-04 2016-08-09 Sap Se Systems and methods for creating context sensitive graph topologies based on multidimensional context information
US9971578B2 (en) * 2012-10-15 2018-05-15 Microsoft Technology Licensing, Llc Reference attribute annotation signifying no external reference
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US9171401B2 (en) 2013-03-14 2015-10-27 Dreamworks Animation Llc Conservative partitioning for rendering a computer-generated animation
US9224239B2 (en) 2013-03-14 2015-12-29 Dreamworks Animation Llc Look-based selection for rendering a computer-generated animation
US9811936B2 (en) * 2013-03-15 2017-11-07 Dreamworks Animation L.L.C. Level-based data sharing for digital content production
US9589382B2 (en) 2013-03-15 2017-03-07 Dreamworks Animation Llc Render setup graph
US9208597B2 (en) 2013-03-15 2015-12-08 Dreamworks Animation Llc Generalized instancing for three-dimensional scene data
US9230294B2 (en) 2013-03-15 2016-01-05 Dreamworks Animation Llc Preserving and reusing intermediate data
US9626787B2 (en) 2013-03-15 2017-04-18 Dreamworks Animation Llc For node in render setup graph
US9659398B2 (en) 2013-03-15 2017-05-23 Dreamworks Animation Llc Multiple visual representations of lighting effects in a computer animation scene
US9218785B2 (en) 2013-03-15 2015-12-22 Dreamworks Animation Llc Lighting correction filters
US9514562B2 (en) 2013-03-15 2016-12-06 Dreamworks Animation Llc Procedural partitioning of a scene
FR3004274A1 (fr) * 2013-04-09 2014-10-10 Krono Safe Procede d'execution de taches dans un systeme temps-reel critique
US20140189650A1 (en) * 2013-05-21 2014-07-03 Concurix Corporation Setting Breakpoints Using an Interactive Graph Representing an Application
US9734040B2 (en) 2013-05-21 2017-08-15 Microsoft Technology Licensing, Llc Animated highlights in a graph representing an application
US8990777B2 (en) 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US9280841B2 (en) 2013-07-24 2016-03-08 Microsoft Technology Licensing, Llc Event chain visualization of performance data
US9292415B2 (en) 2013-09-04 2016-03-22 Microsoft Technology Licensing, Llc Module specific tracing in a shared module environment
WO2015071777A1 (en) 2013-11-13 2015-05-21 Concurix Corporation Software component recommendation based on multiple trace runs
WO2015085152A1 (en) 2013-12-05 2015-06-11 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
JP6594950B2 (ja) * 2014-07-24 2019-10-23 アビニシオ テクノロジー エルエルシー データ系統の要約
US10740304B2 (en) * 2014-08-25 2020-08-11 International Business Machines Corporation Data virtualization across heterogeneous formats
KR101656619B1 (ko) * 2015-06-05 2016-09-09 포항공과대학교 산학협력단 Rbi 그래프 기반의 서브 그래프 리스팅 방법
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US11481440B2 (en) * 2015-11-30 2022-10-25 Salesforce.Com, Inc. System and method for processing metadata to determine an object sequence
AU2016377516B2 (en) 2015-12-21 2020-01-30 Ab Initio Technology Llc Sub-graph interface generation
US10567248B2 (en) * 2016-11-29 2020-02-18 Intel Corporation Distributed assignment of video analytics tasks in cloud computing environments to reduce bandwidth utilization
US10474771B2 (en) 2017-06-19 2019-11-12 Honeywell International Inc. Calculation order management for a sequential-modular process simulator
US11256748B2 (en) 2018-11-30 2022-02-22 Riivos, Inc. Complex modeling computational engine optimized to reduce redundant calculations
US11132403B2 (en) 2019-09-06 2021-09-28 Digital Asset Capital, Inc. Graph-manipulation based domain-specific execution environment
US10915578B1 (en) 2019-09-06 2021-02-09 Digital Asset Capital, Inc. Graph outcome determination in domain-specific execution environment
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
CN112948610B (zh) * 2021-02-25 2022-07-29 杭州欧若数网科技有限公司 图查询语言的结果行为验证方法和系统
US20230275913A1 (en) * 2022-02-25 2023-08-31 Microsoft Technology Licensing, Llc Using graph enrichment to detect a potentially malicious access attempt
US12001481B2 (en) * 2022-04-13 2024-06-04 Oracle International Corporation Graph-organized file system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499037B1 (en) 1999-09-09 2002-12-24 Lucent Technologies Inc. System and method for serializing updates to ancestor sites in a distributed database
WO2004003738A2 (en) 2002-06-28 2004-01-08 Critical Blue Ltd Generating code for a configurable microprocessor

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4698751A (en) * 1984-07-13 1987-10-06 Ford Aerospace & Communications Corporation Systolic array for solving cyclic loop dependent algorithms
US4953106A (en) * 1989-05-23 1990-08-28 At&T Bell Laboratories Technique for drawing directed graphs
US5187785A (en) * 1990-12-28 1993-02-16 General Electric Company Algorithm for representing component connectivity
DE69331705T2 (de) * 1992-12-21 2002-12-19 Apple Computer Verfahren und gerät zur umwandlung einer beliebigen topologie von einer knotensammlung in einen acyclischen gerichteten graph
CA2097232C (en) * 1993-05-28 1999-01-19 Phillip J. Beaudet Displaying partial graphs by expanding and collapsing nodes
US5461573A (en) * 1993-09-20 1995-10-24 Nec Usa, Inc. VLSI circuits designed for testability and methods for producing them
US5748188A (en) * 1995-10-12 1998-05-05 Ncr Corporation Hypertext markup language (HTML) extensions for graphical reporting over an internet
SG77163A1 (en) * 1998-03-06 2000-12-19 John Francis Chong A method of implementing an acyclic directed graph structure using a relational database
US6369819B1 (en) * 1998-04-17 2002-04-09 Xerox Corporation Methods for visualizing transformations among related series of graphs
US6708187B1 (en) * 1999-06-10 2004-03-16 Alcatel Method for selective LDAP database synchronization
US6553384B1 (en) * 1999-06-14 2003-04-22 International Business Machines Corporation Transactional name service
CA2288614C (en) * 1999-11-08 2004-05-11 Robert J. Blainey Loop allocation for optimizing compilers
US6832370B1 (en) * 2000-05-09 2004-12-14 Hewlett-Packard Development, L.P. Data speculation within modulo scheduled loops
US7007270B2 (en) * 2001-03-05 2006-02-28 Cadence Design Systems, Inc. Statistically based estimate of embedded software execution time
US6768988B2 (en) * 2001-05-29 2004-07-27 Sun Microsystems, Inc. Method and system for incorporating filtered roles in a directory system
US7120698B2 (en) * 2001-09-20 2006-10-10 Sun Microsystems, Inc. Access control for an e-commerce application
US7389335B2 (en) * 2001-11-26 2008-06-17 Microsoft Corporation Workflow management based on an integrated view of resource identity
US7058655B2 (en) * 2002-01-11 2006-06-06 Sun Microsystems, Inc. Determining object graph and object graph projection
US7185328B2 (en) * 2002-05-30 2007-02-27 Microsoft Corporation System and method for improving a working set
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6499037B1 (en) 1999-09-09 2002-12-24 Lucent Technologies Inc. System and method for serializing updates to ancestor sites in a distributed database
WO2004003738A2 (en) 2002-06-28 2004-01-08 Critical Blue Ltd Generating code for a configurable microprocessor

Also Published As

Publication number Publication date
EP1605373B1 (en) 2018-10-17
JP2005339534A (ja) 2005-12-08
EP1605373A1 (en) 2005-12-14
JP4738885B2 (ja) 2011-08-03
US7614037B2 (en) 2009-11-03
US20050262470A1 (en) 2005-11-24
KR20060045780A (ko) 2006-05-17

Similar Documents

Publication Publication Date Title
KR100970823B1 (ko) 그래프 분석 및 동기화를 위한 방법 및 시스템
US11012460B2 (en) Dynamic hierarchical tagging system and method
US9934288B2 (en) Mechanisms for privately sharing semi-structured data
US20180129685A1 (en) Omega names: name generation and derivation
US10965530B2 (en) Multi-stage network discovery
JP5710851B2 (ja) 影響分析のためのシステムおよび方法
CN107430611B (zh) 过滤数据沿袭图
US7913227B2 (en) Methods and apparatus for management of configuration item lifecycle state transitions
CN107251021B (zh) 过滤数据沿袭图
US11762839B2 (en) Search method using data structure for supporting multiple search in blockchain-based IoT environment, and device according to method
CN106664224A (zh) 通信系统的元数据增强型库存管理的方法和系统
US10552127B2 (en) Method and system for developing relation-context specific software applications
US11449477B2 (en) Systems and methods for context-independent database search paths
US8447786B2 (en) Language extensions for creating, accessing, querying and updating RDF data
Zhang et al. Recognizing patterns in streams with imprecise timestamps
US20220188448A1 (en) System and method for implementing mandatory access control on queries of a self-describing data system
EP2019362A2 (en) Spatial data validation systems
CN114168149A (zh) 一种数据转换方法及装置
CN112256927B (zh) 基于属性图的知识图谱数据处理方法和装置
Van Oirschot et al. Using trace clustering for configurable process discovery explained by event log data
US20200311048A1 (en) Extensible Validation Framework
US20230385337A1 (en) Systems and methods for metadata based path finding
CN112732675B (zh) 一种教学用轻量级数据库系统
US20220343181A1 (en) Knowledge-Guided System for Automated Event Monitoring
Fournier-Viger et al. Finding strongly correlated trends in dynamic attributed graphs

Legal Events

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

Payment date: 20130628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 10