KR20200024074A - 최근접 친구 검색 장치 - Google Patents

최근접 친구 검색 장치 Download PDF

Info

Publication number
KR20200024074A
KR20200024074A KR1020190072650A KR20190072650A KR20200024074A KR 20200024074 A KR20200024074 A KR 20200024074A KR 1020190072650 A KR1020190072650 A KR 1020190072650A KR 20190072650 A KR20190072650 A KR 20190072650A KR 20200024074 A KR20200024074 A KR 20200024074A
Authority
KR
South Korea
Prior art keywords
query
friend
hop
list
cell
Prior art date
Application number
KR1020190072650A
Other languages
English (en)
Other versions
KR102172236B1 (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 KR20200024074A publication Critical patent/KR20200024074A/ko
Application granted granted Critical
Publication of KR102172236B1 publication Critical patent/KR102172236B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Tourism & Hospitality (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Remote Sensing (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

친구 검색 장치가 개시된다. 상기 친구 검색 장치는 셀들(cells)로 구성되고, 사용자들 각각을 나타내는 정점(vertex,
Figure pat00668
)의 집합(
Figure pat00669
)과 상기 사용자들 사이의 친구 관계를 나타내는 엣지(edge,
Figure pat00670
)의 집합(
Figure pat00671
)으로 구성된 비방향성 그래프(undirected graph,
Figure pat00672
)가 반영된 그리드(grid) 상에서 쿼리를 처리하고, 질의자(query issuer,
Figure pat00673
), 질의 지점(query point,
Figure pat00674
), 검색 결과의 개수(
Figure pat00675
,
Figure pat00676
는 자연수), 및 친밀도(
Figure pat00677
,
Figure pat00678
은 자연수)를 포함하고 상기 질의자(
Figure pat00679
)의
Figure pat00680
-홉 친구들 중 상기 질의 지점(
Figure pat00681
)으로부터 가장 가까운
Figure pat00682
명에 대한 검색 요청인
Figure pat00683
Figure pat00684
-NCF 쿼리(
Figure pat00685
-Nearest
Figure pat00686
-Close Friends query,
Figure pat00687
Figure pat00688
은 자연수)를 수신하는 쿼리 수신부, 상기 질의자(
Figure pat00689
)의
Figure pat00690
-홉 친구 리스트(
Figure pat00691
)와 상기 질의자(
Figure pat00692
)의
Figure pat00693
-홉 친구가 포함된 셀들의 리스트인
Figure pat00694
-홉 개인 셀 리스트(
Figure pat00695
)를 생성하는 리스트 생성부, 및 상기
Figure pat00696
-홉 친구 리스트(
Figure pat00697
)와 상기
Figure pat00698
-홉 개인 셀 리스트(
Figure pat00699
)를 이용하여 상기
Figure pat00700
Figure pat00701
-NCF 쿼리에 대한 응답을 생성하는 쿼리 처리부를 포함한다.

Description

최근접 친구 검색 장치{DEVICE FOR SEARCHING NEAREST CLOSE FRIENDS}
본 발명은 최근접 친한 친구 검색을 요청하는 쿼리를 처리하는 장치와 방법에 관한 것이다.
스마트 디바이스(smart device)의 급격한 보급으로 인하여, LBS(location-based services)가 주목받고 있다. 스마트 디바이스를 통해 사용자는 자신의 위치 정보를 위치 기반 소셜 네트워크(location-based social network), 즉 지오-소셜 네트워크(Geo-Social Network, GeoSN) 서비스(예; Foursquare, Facebook, Twitter, Yelp 등)에 활용할 수 있게 되었다. 예컨대, Facebook의 질의자들(query issuers)은 'Nearby Friends'라 불리는 기능을 사용하여 인접한 친구들(neighboring friends)을 검색할 수 있다. 또한, Foursquare의 사용자들은 체크인 정보(check-in information)를 그들의 친구들에게 리포트(report)하고, 서비스(Foursquare)는 그들의 친구 관계(friend relationships)를 향상시키기 위한 몇몇 장소를 추천한다.
그럼에도 불구하고, 종래의 공간 질의 처리 기법들은 사회적 관계(social relationships)를 고려하지 않고 오직 위치 데이터(location data) 만을 고려하기 때문에 활용도가 떨어진다. 일 예로, 서비스의 사용자가 인접한 친구들 또는 그들의 지인들(acquaintances)을 검색하고자 할 때, 서비스는 사용자의 요구를 효율적으로 만족시키지 못한다. 따라서, 사용자들은 순차적으로 그리고 직접 그들의 친구 리스트(friend lists)를 검토하여야 한다.
대한민국 공개특허 제2014-0026305호 (2014.03.05. 공개) 대한민국 등록특허 제1760600호 (2017.07.24. 공고)
K. Mouratidis, D. Papadias, M. Hadjieleftheriou, Conceptual partitioning: an efficient method for continuous nearest neighbor monitoring, in: Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, ACM, 2005, pp. 634-645. C. Shim, W. Kim, W. Heo, S. Yi, C.Y. Dohn, l-Close range friends query on social grid index, IEICE Trans. Inf. Syst. 100 (4) (2017) 811-812.
본 발명이 이루고자 하는 기술적인 과제는 최근접 친한 친구 검색 요청을 처리할 수 있는 장치 및 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 친구 검색 장치는 셀들(cells)로 구성되고, 사용자들 각각을 나타내는 정점(vertex,
Figure pat00001
)의 집합(
Figure pat00002
)과 상기 사용자들 사이의 친구 관계를 나타내는 엣지(edge,
Figure pat00003
)의 집합(
Figure pat00004
)으로 구성된 비방향성 그래프(undirected graph,
Figure pat00005
)가 반영된 그리드(grid) 상에서 쿼리를 처리하는 친구 검색 장치로써, 에 있어서, 질의자(query issuer,
Figure pat00006
), 질의 지점(query point,
Figure pat00007
), 검색 결과의 개수(
Figure pat00008
,
Figure pat00009
는 자연수), 및 친밀도(
Figure pat00010
,
Figure pat00011
은 자연수)를 포함하고 상기 질의자(
Figure pat00012
)의
Figure pat00013
-홉 친구들 중 상기 질의 지점(
Figure pat00014
)으로부터 가장 가까운
Figure pat00015
명에 대한 검색 요청인
Figure pat00016
Figure pat00017
-NCF 쿼리(
Figure pat00018
-Nearest
Figure pat00019
-Close Friends query,
Figure pat00020
Figure pat00021
은 자연수)를 수신하는 쿼리 수신부, 상기 질의자(
Figure pat00022
)의
Figure pat00023
-홉 친구 리스트(
Figure pat00024
)와 상기 질의자(
Figure pat00025
)의
Figure pat00026
-홉 친구가 포함된 셀들의 리스트인
Figure pat00027
-홉 개인 셀 리스트(
Figure pat00028
)를 생성하는 리스트 생성부, 및 상기
Figure pat00029
-홉 친구 리스트(
Figure pat00030
)와 상기
Figure pat00031
-홉 개인 셀 리스트(
Figure pat00032
)를 이용하여 상기
Figure pat00033
Figure pat00034
-NCF 쿼리에 대한 응답을 생성하는 쿼리 처리부를 포함한다.
본 발명의 실시 예에 따른 친구 검색 장치 및 방법에 의할 경우, 시스템에 부하를 주지 않고, 질의 지점과 가장 근접한 친구를 검색할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명이 적용 가능한 하우스 파티 시나리오를 설명하기 위한 도면이다.
도 2는
Figure pat00035
쿼리의 일 예를 설명하기 위한 도면이다.
도 3은 CPM(conceptual partitioning)을 설명하기 위한 도면이다.
도 4는 친구 셀의 예를 도시한다.
도 5는
Figure pat00036
의 3-홉 친구 리스트의 예를 도시한다.
도 6a는 NCS의 구체적인 알고리즘을 도시하고, 도 6b는 도 6a에 도시된 FindCellData() 함수의 구체적인 알고리즘을 도시한다.
도 7은
Figure pat00037
=2이고
Figure pat00038
=2일 때, NCS의 예를 도시한다.
도 8은 c1의 3-홉 친구 셀 리스트의 예를 도시한다.
도 9a는 FCS의 수도 코드(pseudo code)를 도시하고, 도 9b는 도 9a에 도시된 MakeFriendCell() 함수의 알고리즘을 도시한다.
도 10은 FCS의 예를 도시한다.
도 11은 3-홉 개인 셀 리스트의 예를 도시한다.
도 12는 SGI 기반 PCS의 수도 코드(pseudo code)를 도시한다.
도 13은 PCS의 예를 도시한다.
도 14는 기본 업데이트의 세부 내용이 포함된 알고리즘을 도시한다.
도 15는 SGI 업데이트의 5 가지 예를 도시한다.
도 16a는 FAM을 이용한 SGI 업데이트의 상세 알고리즘을 도시하고, 도 16b는 도 16a에 도시된 CheckFAM() 함수의 상세 알고리즘을 도시한다.
도 17은 FAM을 이용한 업데이트의 일 예를 도시한다.
도 18은 본 발명의 일 실시 예에 의한 친구 검색 장치의 기능 블럭도를 도시한다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1 구성 요소는 제2 구성 요소로 명명될 수 있고 유사하게 제2 구성 요소는 제1 구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명은 프로모션 광고(promotion advertisement), 공간적인 크라우드소싱(spatial crowdsourcing), 바이럴 마케팅(viral marketing), 블라인드 데이트(blind date) 등과 같이 실생활에 활용이 가능하다. 이하에서, 본 발명이 적용 가능한 시나리오에 대하여 설명하기로 한다.
도 1은 본 발명이 적용 가능한 하우스 파티 시나리오(house party scenario)를 설명하기 위한 도면이다.
여섯 명의 사람들(James, Emma, Mia, Lucas, Luke, David), 이들 각각의 친구 리스트(friend lists), 및 파티 장소(party location)가 주어진 상황에서, 제임스(James)는 새로운 친구들을 사귀기 위한 하우스 파티(house party)를 개최하고 가능한 많은 참석자를 초대하고자 한다. 제임스(James)는 파티 장소로부터 가장 근접한 사람들이 파티에 참석할 것으로 생각한다. 그러나, 제임스(James)의 친구는 단 두 명(즉, 루크(Luke)와 미아(Mia)) 뿐이고, 루크(Luke)는 파티 장소로부터 아주 먼 곳에 위치한다. 이러한 상황에서, 파티를 성공적으로 개최하기 위해, 제임스(James)는 친구인 미아(Mia)의 도움을 받아 엠마(Emma)와 루카스(Lucas)를 초대할 수 있다. 엠마(Emma)와 루카스(Lucas)는 제임스(James)의 친구가 아님에도 불구하고, 지리적인 근접(proximity)과 적절한 사회적 교우 관계(social friendships)로 인하여 새로운 친구가 될 수 있다.
본 발명에서
Figure pat00039
-최근접
Figure pat00040
-친한 친구 쿼리(
Figure pat00041
-Nearest
Figure pat00042
-Close Friends (
Figure pat00043
) query,
Figure pat00044
Figure pat00045
은 자연수)라 불리는 새로운 유형의 지오-소셜 네트워크 쿼리(GeoSN query)를 정의한다.
Figure pat00046
쿼리
Figure pat00047
는 쿼리 사용자(즉, 질의자)
Figure pat00048
Figure pat00049
-홉(
Figure pat00050
-hop) 친구들 중에서 쿼리 포인트(query point, 질의 지점)
Figure pat00051
와 가장 근접한
Figure pat00052
개의 데이터 객체들(data objects)을 묻는 질의를 의미할 수 있다. 즉,
Figure pat00053
쿼리는
Figure pat00054
-홉 친구들 중에서
Figure pat00055
와 가장 근접하게 위치한
Figure pat00056
명의 친구들에 대한 추천(또는 검색) 요청을 의미할 수 있다. 여기서,
Figure pat00057
-홉 친구란
Figure pat00058
번 이하의 직접적인 친구 관계 내에 연결될 수 있는 관계를 의미할 수 있다. 따라서,
Figure pat00059
-홉 친구는 1-홉 친구, 2-홉 친구, …, 및 (
Figure pat00060
-1)-홉 친구를 포함한다.
Example 1. 도 2는
Figure pat00061
쿼리의 일 예를 설명하기 위한 도면이다. 7 개의 데이터 오브젝트들(
Figure pat00062
), 결과(즉, 쿼리의 결과)의 개수
Figure pat00063
, 사회적 제약(social constraint)
Figure pat00064
, 쿼리 사용자(질의자)
Figure pat00065
, 및 쿼리 포인트(질의 지점)
Figure pat00066
가 주어졌을 때,
Figure pat00067
검색(search)은 전통적인 공간적 쿼리(traditional spatial query)와는 다르게
Figure pat00068
를 응답으로 선택한다. 이는
Figure pat00069
Figure pat00070
Figure pat00071
보다 쿼리 포인트
Figure pat00072
에 근접하지만
Figure pat00073
와 관련성이 없기 때문이다. 다시 말해,
Figure pat00074
Figure pat00075
Figure pat00076
의 2-홉 친구가 아니기 때문이다.
본 발명의 기여를 요약하면 다음과 같다.
·새로운 유형의 지오-소셜 네트워크 쿼리(GeoSN query), 즉
Figure pat00077
쿼리를 정의하였다.
·
Figure pat00078
쿼리를 처리하기 위한 일련의 알고리즘들을 개발하였다.
·효율적인 인덱스 업데이트 방법을 제안하였다.
·제안하는 방식의 효율성을 평가하기 위하여 인위적인 데이터 셋과 실제 데이터 셋으로 다양한 실험을 수행하였다.
이하에서는, CPM(Conceptual partitioning)과 SGI(Social grid index)를 설명한 후
Figure pat00079
쿼리에 대하여 상세하게 설명하기로 한다.
Conceptual partitioning (CPM)
주어진 쿼리 포인트(query point, 질의 지점)에 가장 근접한
Figure pat00080
개의 데이터 객체들을 찾는
Figure pat00081
-최근접 이웃(
Figure pat00082
-Nearest Neighbor,
Figure pat00083
-NN) 쿼리와 이의 변형 예들은 지난 수십년 동안 꾸준히 연구되었다. 이들 중 Mouratidis 등은 가장 널리 차용되고 있는 기법 중 하나이고 CPM(conceptual partitioning)이라 불리는
Figure pat00084
-NN 검색 알고리즘을 소개하였다(K. Mouratidis, D. Papadias, M. Hadjieleftheriou, Conceptual partitioning: an efficient method for continuous nearest neighbor monitoring, in: Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, ACM, 2005, pp. 634-645.). CPM의 주된 개념은 전체 그리드(whole grid)를 셀들(cells)의 집합(set)으로 구성되는 다양한 크기의 직사각형들(various-sized rectangles)로 분할하는 것이다(도 3의 (a)와 (b) 참조). 직사각형은 방향(direction(up, down, right, or left))과 레벨 넘버(level number, 해당 직사각형과 쿼리 포인트(query point)
Figure pat00085
를 포함하는 쿼리 셀(query cell)
Figure pat00086
사이에 존재하는 직사각형의 개수)의 두 가지 요소(elements)에 의해 표현된다. 예컨대, 도 3의 (b)에서
Figure pat00087
Figure pat00088
는 각각
Figure pat00089
로부터 윗쪽 첫번째(first up-side) 직사각형과 왼쪽 세번째(third left-side) 직사각형을 나타낸다. 또한, 동일한 레벨 넘버를 갖는 직사각형들은 동일한 개수의 셀을 포함한다.
Figure pat00090
-NN 쿼리
Figure pat00091
가 주어졌을 때, CPM은 레벨의 오름차순(ascending level-order)으로 직사각형들과 셀들을 유지하기 위해 공집합인 결과 집합(empty result set)
Figure pat00092
과 비어 있는 민-힙(empty min-heap)
Figure pat00093
를 초기화한다. 즉,
Figure pat00094
Figure pat00095
가 초기화된다.
Figure pat00096
Figure pat00097
와 타겟 오브젝트(target object)
Figure pat00098
(타겟 오브젝트는 직사각형, 셀, 또는 데이터 오브젝트가 될 수 있음)의 위치 사이의 최소 거리(minimum distance)라 하고,
Figure pat00099
Figure pat00100
의 k번째 원소(kth component)와
Figure pat00101
사이의
Figure pat00102
라 하자.
Figure pat00103
의 엔트리들(entries)은 항상
Figure pat00104
의 오름차순으로 유지된다. 쿼리에 대한 처리가 시작되면, CPM은
Figure pat00105
Figure pat00106
를 에워싸는(surrounding) 직사각형들(
Figure pat00107
,
Figure pat00108
,
Figure pat00109
Figure pat00110
)을
Figure pat00111
에 삽입한다. 그리고,
Figure pat00112
의 첫번째 엔트리(
Figure pat00113
, 즉 c3,3)는 삭제된다(de-heaped). 이때, 삭제된 엔트리(즉, 디-힙된 엔트리)가 셀이면, CPM은 셀을 조사하고(examines)
Figure pat00114
Figure pat00115
를 업데이트한다. 삭제된 엔트리가 직사각형이면, CPM은 직사각형에 포함되는 모든 셀들과 다음 레벨의 직사각형(next-level rectangle)을
Figure pat00116
에 삽입한다. 이러한 단계들은
Figure pat00117
의 엔트리가 없을 때까지 또는
Figure pat00118
가 체크될 다음 셀(또는 엔트리)의
Figure pat00119
보다 작아질 때까지 반복적으로 수행된다. 요컨대, CPM은 아래 과정을 이용하여 민-힙의 첫번째 엔트리를 반복적으로 삭제(디-힙)한다.
·엔트리가 셀이면, 셀을 체크함(check)
·엔트리가 직사각형이면, 현재 직사각형에 포함되는 셀들과 동일 방향에서 다음 레벨의 직사각형을 삽입함
Example 2. 도 3의 (c)는 CPM의 검색 예를 도시하고, 표 1에는 검색 예의 세부 내용인 힙의 상태(heap state)가 기재되어 있다. 쿼리 포인트가
Figure pat00120
이고
Figure pat00121
가 1이라 가정하자. 우선, CPM은
Figure pat00122
가 포함된 셀, 즉 쿼리 셀 c3,3을 검색한다. 다음으로, 힙의 컨텐츠(heap contents)는
Figure pat00123
의 오름차순으로 정렬된
Figure pat00124
주위의 4 개의 초기 직사각형들(즉, L0, U0, D0, 및 R0)이다. c3,3에는 어떠한 데이터 오브젝트(data object)도 존재하지 않기 때문에, 결과 집합(result set)은 공집합니다. 다음으로, L0가 디힙(de-heaped)된 후 c2,3과 c2,4가 힙(heap)에 삽입된다. 데이터 오브젝트 d0가 발견될 때까지 검색(search)은 동일한 방식으로 진행된다. CPM은 d0를 결과 집합(result set)에 삽입하고
Figure pat00125
Figure pat00126
로 설정한다(즉,
Figure pat00127
). 그런 다음,
Figure pat00128
Figure pat00129
보다 작기 때문에(대시 기호(-)로 된 큰 원(large dashed circle)과 겹침) CPM은 U0를 방문한다(visit). c3,2를 방문한 후 CPM은 최종 해(final answer), 즉 d1을 반환하고(return), 어떤 직사각형이나 어떤 셀의
Figure pat00130
Figure pat00131
보다 작지 않기 때문에(작은 실선 원(small, solid circle)과 겹치지 않음) 절차를 중단한다.
Access
(iteration)
Heap contents
(ordered by mindist)
Result
(data object)
c3,3 L 0 , U0, D0, R0 φ
L0 c 2,3 , U0, c2,4, D0, R0, L1 φ
c2,3 U 0 , c2,4, D0, R0, L1 φ
U0 c 3,4 , c2,4, D0, R0, c4,4, L1, U1 φ
c3,4 c 2,4 , D0, R0, c4,4, L1, U1 φ
c2,4 D 0 , R0, c4,4, L1, U1 d0
D0 c 3,2 , c2,2, R0, c4,4, L1, U1, D1 d0
c3,2 c2,2, R0, c4,4, L1, U1, D1 d 1
Social Grid Index ( SGI )
SGI 구조(Social Grid Index structure)는 그리드 셀들(grid cells) 사이의 공간적인 관계(spatial relationships)에 사회적 관계(social relationships)를 더하여 나타내는 그리드 인덱스 구조(grid index structure)이다(C. Shim, W. Kim, W. Heo, S. Yi, C.Y. Dohn, l-Close range friends query on social grid index, IEICE Trans. Inf. Syst. 100 (4) (2017) 811-812.). SGI는 셀들에 포함된 데이터 오브젝트들(data objects)의 친구 관계를 고려하여 셀들의 친구 관계를 형성한다. 예컨대, 동일한 셀(들) 또는 상이한 셀(들)에 포함된 어떤 2 개의 데이터 오브젝트들이 친구이면 셀들은 친구 셀(friend-cell(s))이다.
Definition 1 (friend-cell, 친구 셀). 셀
Figure pat00132
내의 데이터 오브젝트
Figure pat00133
와 셀
Figure pat00134
내의 데이터 오브젝트
Figure pat00135
가 친구라면,
Figure pat00136
Figure pat00137
는 친구 셀(friend-cells)이다.
Observation 1. 모든 데이터 오브젝트가 적어도 하나의 친구를 갖는다고 가정하자. 동일한 셀 내의 2 개의 서로 다른 데이터 오브젝트들이 친구라면 셀 역시 친구 셀이 될 수 있다.
Example 3. 도 4는 친구 셀의 예를 도시한다. 9 개의 데이터 오브젝트들(v0 내지 v8)을 포함하는 8 개의 그리드 셀들(grid cells)이 존재한다. 친구 셀의 정의에 따라, 셀 c1의 친구 셀들은 c0, c1, c2, c5 및 c6(음영으로 표시된 셀들)이다.
Figure pat00138
를 각 정점(vertex,
Figure pat00139
)이 데이터 오브젝트(사용자)에 대응하는(쿼리 사용자
Figure pat00140
역시 데이터 오브젝트들 중 하나임) 비방향성 소셜 그래프(undirected social graph)라 하고, 각 엣지(edge)
Figure pat00141
가 데이터 오브젝트(사용자) 사이의 친구 관계를 나타낸다고 하자. 다시 말해, 엣지
Figure pat00142
Figure pat00143
Figure pat00144
가 친구임을 나타낸다. 모든 데이터 오브젝트들은 유클리드 공간(Euclidean space)에서 포인트
Figure pat00145
로 표현되는 그들 자신의 위치를 갖고, 공간적인 거리(spatial distance)
Figure pat00146
는 2 개의 데이터 오브젝트들(즉, 사람들) 사이의 지리적인 거리(geographical distance)를 가리킨다. 또한, 친구 관계의 정도(friendship degree)
Figure pat00147
은 그래프 내에서 2 개의 데이터 오브젝트들 사이의 엣지들(edges 또는 hops)의 최소 개수를 나타낸다.
Definition 2 (
Figure pat00148
-hop friend list,
Figure pat00149
-홉 친구 리스트).
Figure pat00150
은 아래 수학식 1과 같이
Figure pat00151
Figure pat00152
-홉 친구 리스트(
Figure pat00153
-hop friend list)를 나타낸다.
Figure pat00154
Example 4. 도 5는
Figure pat00155
의 3-홉 친구 리스트의 예를 도시한다. 각 정점(point 또는 vertex)과 각 선분(line segment 또는 edge)은 데이터 오브젝트(data object)와 데이터 오브젝트들 사이의 친구 관계에 대응한다. 엣지들에 따르면,
Figure pat00156
의 1-홉 친구 리스트는
Figure pat00157
이다. 순차적으로,
Figure pat00158
Figure pat00159
의 친구이기 때문에
Figure pat00160
의 2-홉 친구 리스트는
Figure pat00161
Figure pat00162
의 1-홉 친구들로 구성된다. 동일한 방식으로,
Figure pat00163
Figure pat00164
의 친구 관계로 인하여 3-홉 친구 리스트는
Figure pat00165
을 포함한다.
Definition 3 (nearest
Figure pat00166
-close friend query, 최근접
Figure pat00167
-친한 친구 쿼리). 비방향성 그래프(undirected graph)
Figure pat00168
, 쿼리 포인트(query point)
Figure pat00169
, 쿼리 사용자(query user)
Figure pat00170
, 그리고 친밀도 또는 친구 관계 정도(friendship degree)
Figure pat00171
이 주어졌을 때, 최근접
Figure pat00172
-친한 친구(
Figure pat00173
-NCF) 쿼리
Figure pat00174
는 아래 수학식 2와 같은
Figure pat00175
를 반환(return)한다.
Figure pat00176
Definition 4 (
Figure pat00177
-nearest
Figure pat00178
-close friends query,
Figure pat00179
-최근접
Figure pat00180
-친한 친구 쿼리). 비방향성 그래프(undirected graph)
Figure pat00181
,
Figure pat00182
-최근접
Figure pat00183
-친한 친구(
Figure pat00184
-Nearest
Figure pat00185
-Close Friends,
Figure pat00186
Figure pat00187
-NCF) 쿼리
Figure pat00188
, 쿼리 포인트(query point)
Figure pat00189
, 쿼리 사용자(query user)
Figure pat00190
, 결과 원소의 개수(the number of result elements)
Figure pat00191
, 그리고 친구 관계 정도(friendship degree)
Figure pat00192
이 주어졌을 때,
Figure pat00193
-최근접
Figure pat00194
-친한 친구(
Figure pat00195
Figure pat00196
-NCF) 쿼리는 아래 수학식 3과 같은 결과 리스트(result list 또는 result set)
Figure pat00197
Figure pat00198
을 찾는다.
Figure pat00199
Example 5. 도 5에서
Figure pat00200
,
Figure pat00201
Figure pat00202
이 각각
Figure pat00203
, 1 및 3인
Figure pat00204
Figure pat00205
-NCF 쿼리를 가정하자. 그러면, 쿼리 응답(query answer, 쿼리에 대한 해)은
Figure pat00206
이다(쿼리 포인트
Figure pat00207
에 가장 근접한 3-홉 친구).
Figure pat00208
Figure pat00209
에 가장 근접한 데이터 오브젝트이나,
Figure pat00210
Figure pat00211
의 3-홉 친구가 아니기 때문이다.
Figure pat00212
Figure pat00213
-NCF 쿼리를 처리하기 위한 2 가지의 접근법이 존재한다. 첫번째 방법은 1) 모든 데이터 오브젝트들을 각 데이터 오브젝트와 주어진 쿼리 포인트 사이의 최소 거리인
Figure pat00214
의 오름차순(ascending order)으로 정렬하는 단계와 2) 각 데이터 오브젝트가 쿼리 사용자의
Figure pat00215
-홉 친구에 포함되는지 아닌지를 반복적으로 체크(check)하는 단계의 2 단계로 구성된다. 이러한 단계들은 쿼리 결과로써
Figure pat00216
개의 데이터 오브젝트들이 발견될 때까지 반복된다. 다른 방법은 첫번째 방법의 단계를 역으로 수행하는 것이다. 즉, 1) 쿼리 사용자의
Figure pat00217
-홉 친구들을 찾는 단계와 2)
Figure pat00218
-홉 친구들을
Figure pat00219
의 오름 차순으로 정렬하는 단계로 구성된다. 결과는 최초의
Figure pat00220
개 데이터 오브젝트들이다.
그러나, 이러한 접근 방식들은 2 가지의 주된 문제점을 갖는다. 첫째,
Figure pat00221
가 증가하면 각 데이터 오브젝트에 대하여 스크래치(scratch, 예컨대 그래프에서 최소 경로 계산(shortest path computation))로부터 매우 많은
Figure pat00222
-홉 친구 체크를 수행하여야 하고, 이는 쿼리 처리에 상당한 오버헤드를 발생시킨다. 게다가, 친구 관계 정도
Figure pat00223
의 값이 증가함에 따라 정렬되어야 하는 데이터 오브젝트들의 개수가 증가하게 된다.
이하에서는,
Figure pat00224
Figure pat00225
-NCF 쿼리를 처리하기 위한 일련의 방법들에 관해 기술한다.
1. Neighboring cell search( NCS ) over CPM
NCS의 주된 개념은
Figure pat00226
-홉 친구 리스트(
Figure pat00227
-hop friend list)를 이용하여 불필요한
Figure pat00228
-홉 친구 조사를 감소시키는 것이다. NCS는 각 데이터 오브젝트가 쿼리 사용자의
Figure pat00229
-홉 친구인지 아닌지를 수월하게 체크할 수 있다. 또한, NCS는 다음 최근접 데이터 오브젝트(next nearest data object)를 점진적으로 찾기 위하여 CPM(conceptual partitioning)을 이용한다.
NCS는 대안적으로 각 데이터 오브젝트
Figure pat00230
의 공간적인 그리고 사회적인 네트워크 정보를 체크함으로써
Figure pat00231
Figure pat00232
-NCF 쿼리의 결과를 찾는다. NCS의 제1 단계는 소셜 그래프(social graph)에 너비 우선 탐색 기법(breadth-first traversal method)을 적용하여 쿼리 사용자
Figure pat00233
Figure pat00234
-홉 친구 리스트(
Figure pat00235
-hop friend list)를 구축하는 것이다. 다음 단계는 CPM을 이용하여 최근접 데이터 오브젝트를 재귀적으로 찾는 것이다. 마지막 단계는
Figure pat00236
-홉 친구 리스트를 이용하여 각 최근접 데이터 오브젝트가
Figure pat00237
Figure pat00238
-홉 친구인지 아닌지를 체크하는 것이다. NCS의 개략적인 과정은 다음과 같이 요약될 수 있다.
1) 쿼리 사용자(query user, 또는 질의자)
Figure pat00239
Figure pat00240
-홉 친구 리스트(
Figure pat00241
-hop friend list)
Figure pat00242
를 생성
2) 쿼리 셀
Figure pat00243
Figure pat00244
에 인접한 4 개의 직사각형들(
Figure pat00245
를 둘러싸는 4 개의 직사각형들)을 비어 있는(empty) 민-힙(min-heap)
Figure pat00246
에 삽입
3)
Figure pat00247
의 첫번째 엔트리
Figure pat00248
를 추출하고, 다음을 체크
·
Figure pat00249
가 셀이면,
Figure pat00250
를 사용하여
Figure pat00251
내의 각 데이터 오브젝트
Figure pat00252
Figure pat00253
Figure pat00254
-홉 친구인지 아닌지를 체크
·
Figure pat00255
가 직사각형이면, 직사각형 내에 포함된 모든 셀들과 동일한 방향에서의 다음 레벨 직사각형(next level rectangle)을
Figure pat00256
에 삽입
4) 본 알고리즘이 모든 쿼리 결과들(즉,
Figure pat00257
)을 찾거나
Figure pat00258
의 원소(요소 또는 컨텐츠)가 없어질 때까지 단계 3)을 반복적으로 수행
물론, 단계 4)에서 체크될 다음 셀(또는 엔트리)의
Figure pat00259
Figure pat00260
보다 큰 경우, 검색은 중단된다.
NCS의 구체적인 알고리즘은 도 6a에 도시되어 있고, 도 6a에 도시된 FindCellData() 함수의 구체적인 알고리즘은 도 6b에 도시되어 있다.
Example 6. 도 7에서, 쿼리 사용자
Figure pat00261
,
Figure pat00262
=2,
Figure pat00263
=2, 및 쿼리 포인트
Figure pat00264
가 주어졌을 때, 쿼리 응답(query answer)은
Figure pat00265
이다. 표 2는 대응하는 힙 컨텐츠(heap contents)와 검색(search) 반복에 따른 결과를 도시한다.
Access
(iteration)
Heap contents
(ordered by mindist)
Result
(data object)
c2,2 L 0 , U0, D0, R0 φ
L0 c 1,2 , U0, c1,3, D0, R0, L1 φ
c1,2 U 0 , c1,3, D0, R0, L1 φ
U0 c 2,3 , c1,3, D0, R0, c3,3, L1, U1 φ
c2,3 c 1,3 , D0, R0, c3,3, L1, U1 φ
c1,3 D 0 , R0, c3,3, L1, U1 φ
D0 c 2,1 , c1,1, R0, c3,3, L1, U1, D1 φ
c2,1 c 1,1 , R0, c3,3, L1, U1, D1 φ
c1,1 R 0 , c3,3, L1, U1, D1 v10
R0 c 3,2 , c3,3, c3,1, L1, U1, D1, R1 v10
c3,3 c 3,1 , L1, U1, D1, R1 v10
c3,1 L 1 , U1, D1, R1 v10, v7
L1 c 0,2 , c0,3, c0,1, U1, D1, R1, c0,4, L2 v10, v7
c0,2 c0,3, c0,1, U1, D1, R1, c0,4, L2 v 10 , v 11
2. Friend-cell search on SGI (Social Grid Index)
Figure pat00266
Figure pat00267
-NCF 쿼리를 처리하기 위하여, NCS는 각 데이터 오브젝트의
Figure pat00268
-홉 친구 리스트를 이용하여 불필요한
Figure pat00269
-홉 친구 계산(
Figure pat00270
-hop friend computations)을 생략할 수 있다. 그럼에도 불구하고, NCS는 쿼리 사용자의
Figure pat00271
-홉 친구들과 무관하게 매우 많은 수의 셀들을 체크한다(예컨대, 도 7에서 셀들 c2,3, c3,4, 및 c2,4). 따라서, 셀 검색(cell search)과 관련하여 성능(performance) 향상을 위한 보다 치밀한
Figure pat00272
Figure pat00273
-NCF 쿼리 처리 기법이 필요하다.
이하에서는,
Figure pat00274
Figure pat00275
-NCF 쿼리를 효율적으로 풀이하기 위하여, FCS(Friend-Cell Search)라 불리는 신규한 검색 알고리즘(search algorithm)을 소개한다. FCS의 주된 전략은 셀들의 사회적 관계를 고려하여 불필요한 검색(즉, 셀 방문(cell visits))을 피하는 것이다. 그 목적을 달성하기 위하여, SGI에 대한 분기 한정 접근(branch-and-bound approach)을 차용하였다.
Definition 5 (
Figure pat00276
-hop friend-cell list,
Figure pat00277
-홉 친구 셀 리스트). 셀
Figure pat00278
가 자신의 친구 셀들을 가지고 있고
Figure pat00279
의 모든 친구 셀들 또한 그들 자신의 친구 셀들을 가지고 있다고 가정하자.
Figure pat00280
Figure pat00281
-홉 친구 셀 리스트(
Figure pat00282
-hop friend-cell list)
Figure pat00283
는 아래 수학식 4와 같이 정의된다.
Figure pat00284
Example 7. 도 8은 c1의 3-홉 친구 셀 리스트의 예를 도시한다. Definition 5에 의해, c1의 1-홉 친구 셀 리스트는
Figure pat00285
이다. 마찬가지로,
Figure pat00286
Figure pat00287
의 친구 관계로 인하여 2-홉 친구 셀 리스트는
Figure pat00288
이다. 유사하게, 3-홉 친구 셀 리스트에는
Figure pat00289
가 추가된다.
Figure pat00290
Figure pat00291
-NCF 쿼리가 주어졌을 때, FCS는 우선 쿼리 사용자(query user)
Figure pat00292
Figure pat00293
-홉 친구 리스트와
Figure pat00294
를 포함하는 사용자 셀(user cell)
Figure pat00295
Figure pat00296
-홉 친구 셀 리스트
Figure pat00297
를 생성한다. 그런 다음, FCS는
Figure pat00298
의 최근접
Figure pat00299
-홉 친구 셀(nearest
Figure pat00300
-hop friend-cell)이
Figure pat00301
Figure pat00302
-홉 친구들을 포함하는지 여부를 회귀적으로 체크한다. FCS의 모든 과정이 NCS의 과정과 유사함에도 불구하고, FCS는 불필요한 셀 방문(cell visits)을 감소시킴으로써 상당수의 불필요한 친구 관계 체크 동작을 피할 수 있다. SGI에 기반한 FCS의 과정은 다음과 같다.
1) 쿼리 사용자(query user)
Figure pat00303
Figure pat00304
-홉 친구 리스트
Figure pat00305
과 사용자 셀(user cell)
Figure pat00306
Figure pat00307
-홉 친구 셀 리스트
Figure pat00308
를 생성
2) 쿼리 셀(query cell)
Figure pat00309
Figure pat00310
를 둘러싸는 4 개의 직사각형들을 비어있는 민-힙(empty min-heap)
Figure pat00311
에 삽입
3)
Figure pat00312
의 첫번째 엔트리(entry)
Figure pat00313
를 추출하고 아래 사항을 체크
·
Figure pat00314
Figure pat00315
에 포함되는 셀이면,
Figure pat00316
를 이용하여
Figure pat00317
내의 각 데이터 오브젝트
Figure pat00318
Figure pat00319
Figure pat00320
-홉 친구인지 여부를 체크
·
Figure pat00321
가 직사각형이면, 직사각형에 포함되는 모든 셀들과 동일한 방향에서 다음 레벨의 직사각형을
Figure pat00322
에 삽입
4) 쿼리 결과를 찾거나
Figure pat00323
의 엔트리가 없어질 때까지 단계 3)을 반복 수행
물론, 단계 4)에서 체크될 다음 셀(또는 엔트리)의
Figure pat00324
Figure pat00325
보다 큰 경우, 검색은 중단된다.
FCS의 수도 코드(pseudo code)는 도 9a에 도시되어 있고, 도 9a에 도시된 MakeFriendCell() 함수의 알고리즘은 도 9b에 도시되어 있다.
Example 8. 도 10은 FCS의 예를 도시한다. 정사각형들(squares)은 SGI 셀들을 나타내고, 특히 옅은 회색(light gray)의 정사각형들은 사용자 셀
Figure pat00326
의 친구 셀들을 나타낸다. 쿼리 사용자
Figure pat00327
,
Figure pat00328
= 2,
Figure pat00329
= 2, 및 쿼리 포인트
Figure pat00330
가 주어진 경우, 정답은 Example 6.과 같이
Figure pat00331
이다. 표 3은 각 단계의 결과와 상세 내역을 보여준다.
Access
(iteration)
Heap contents
(ordered by mindist)
Result
(data object)
L0 c 1,2 , U0, c1,3, D0, R0, L1 φ
U0 c 1,3 , D0, R0, c3,3, L1, U1 φ
D0 c 2,1 , c1,1, R0, c3,3, L1, U1, D1 φ
c2,1 c 1,1 , R0, c3,3, L1, U1, D1 φ
c1,1 R 0 , c3,3, L1, U1, D1 v10
R0 c 3,3 , c3,1, L1, U1, D1, R1 v10
c3,1 L 1 , U1, D1, R1 v10, v7
L1 c 0,2 , U1, D1, R1, L2 v10, v7
c0,2 U1, D1, R1, L2 v 10 , v 11
3. Personal-cell Search on SGI
어떤 셀들은 쿼리 사용자의 어떤 친구도 포함하지 않음에도 불구하고, FCS는 셀들 간의 친구 관계로 인하여 이러한 특정 셀들을 결코 가지치지(prune) 않는다. 예컨대,
Figure pat00332
Figure pat00333
-NCF를 처리할 때, FCS는 불필요한 셀들(
Figure pat00334
,
Figure pat00335
,
Figure pat00336
등)을 체크한다(도 10 참조).
이와 같은 문제점을 해결하기 위하여,
Figure pat00337
Figure pat00338
-NCF 쿼리를 처리할 수 있는 진보된 방법으로서 PCS(Personal-cell Search on SGI)를 제안한다.
Definition 6 (personal-cell, 개인 셀).
Figure pat00339
Figure pat00340
-NCF 쿼리
Figure pat00341
= (
Figure pat00342
,
Figure pat00343
,
Figure pat00344
,
Figure pat00345
)가 주어졌을 때, 적어도 하나의 데이터 오브젝트
Figure pat00346
(in
Figure pat00347
)와
Figure pat00348
가 친구이면, 셀
Figure pat00349
는 쿼리 사용자
Figure pat00350
의 개인 셀(personal-cell)이다. 다시 말해,
Figure pat00351
Figure pat00352
-홉 친구가 포함된 셀들의 리스트를
Figure pat00353
-홉 개인 셀 리스트(
Figure pat00354
)라 할 수 있다.
Definition 7 (
Figure pat00355
-hop personal-cell list,
Figure pat00356
-홉 개인 셀 리스트).
Figure pat00357
Figure pat00358
-NCF 쿼리
Figure pat00359
= (
Figure pat00360
,
Figure pat00361
,
Figure pat00362
,
Figure pat00363
)가 주어졌을 때, 쿼리 사용자
Figure pat00364
는 몇몇의 친구들을 갖고 각 친구
Figure pat00365
또한 자신의 친구들을 갖는다고 가정하자. 그러면,
Figure pat00366
Figure pat00367
-홉 개인 셀 리스트
Figure pat00368
는 다음과 같이 정의된다.
Figure pat00369
Example 9. 도 11은 3-홉 개인 셀 리스트의 예를 도시한다. 각 정사각형(square)은 그리드 셀(grid cell)을 나타내고 각 포인트는 데이터 오브젝트를 나타낸다. Definition 7에 따라,
Figure pat00370
의 1-홉 개인 셀 리스트는 (
Figure pat00371
,
Figure pat00372
,
Figure pat00373
)이다. 마찬가지로,
Figure pat00374
Figure pat00375
의 친구 관계로 인하여 2-홉 개인 셀 리스트에는
Figure pat00376
이 추가된다. 또한, 3-홉 개인 셀 리스트에는
Figure pat00377
이 추가된다.
Figure pat00378
-홉 개인 셀 리스트는 미리 PCS가 불필요한 검색(search)을 생략하도록 하기 때문에, PCS는
Figure pat00379
-홉 친구 조사의 수행 횟수를 감소시킬 수 있다. 우선, PCS는
Figure pat00380
Figure pat00381
-홉 친구 리스트와
Figure pat00382
-홉 개인 셀 리스트를 생성한다. 셀 체크(cell check)를 위한 기준(criteria)이
Figure pat00383
-홉 개인 셀 리스트인 것을 제외하고, 다음의 각 단계들이 FCS로써 수행된다.
1) 쿼리 사용자
Figure pat00384
Figure pat00385
-홉 친구 리스트
Figure pat00386
Figure pat00387
-홉 개인 셀 리스트
Figure pat00388
을 생성
2) 쿼리 셀
Figure pat00389
Figure pat00390
를 둘러싸는 4 개의 직사각형들을 비어있는 민-힙(empty min-heap)
Figure pat00391
에 삽입
3)
Figure pat00392
의 첫번째 엔트리
Figure pat00393
를 추출하고(또는 디-힙하고), 아래 사항을 체크
·
Figure pat00394
Figure pat00395
에 속하는
Figure pat00396
의 개인 셀(personal-cell)이면,
Figure pat00397
를 이용하여
Figure pat00398
내의 각 데이터 오브젝트
Figure pat00399
Figure pat00400
Figure pat00401
-홉 친구인지 체크
·
Figure pat00402
가 직사각형이면,
Figure pat00403
내의 모든 친구 셀들과 다음 레벨의 직사각형을
Figure pat00404
에 삽입
4) 쿼리 결과가 도출되거나
Figure pat00405
의 엔트리가 없어질 때까지 단계 3)을 반복 수행
물론, 단계 4)에서 체크될 다음 엔트리의
Figure pat00406
Figure pat00407
보다 큰 경우, 검색은 중단된다.
SGI 기반 PCS의 수도 코드(pseudo code)는 도 12에 도시되어 있다.
Example 10. 도 13은 PCS의 예를 도시한다. 여기서, 옅은 회색의(light gray) 정사각형들은 쿼리 사용자
Figure pat00408
의 개인 셀들을 나타낸다. 쿼리 사용자
Figure pat00409
,
Figure pat00410
= 2,
Figure pat00411
= 2, 그리고 쿼리 포인트
Figure pat00412
가 주어졌을 때, 쿼리 결과는 앞선 예와 같이 (
Figure pat00413
,
Figure pat00414
)이다. 힙 컨텐츠(heap contents)와 각 단계 수행의 결과는 표 4에 도시되어 있다.
Access
(iteration)
Heap contents
(ordered by mindist)
Result
(data object)
L0 c 1,2 , U0, c1,3, D0, R0, L1 φ
U0 c 1,3 , D0, R0, c3,3, L1, U1 φ
D0 c 2,1 , c1,1, R0, c3,3, L1, U1, D1 φ
c1,1 R 0 , c3,3, L1, U1, D1 v10
R0 c 3,3 , c3,1, L1, U1, D1, R1 v10
c3,1 L 1 , U1, D1, R1 v10, v7
L1 c 0,2 , U1, D1, R1, L2 v10, v7
c0,2 U1, D1, R1, L2 v 10 , v 11
표 4에서, 다음에 체크될 엔트리 U1
Figure pat00415
Figure pat00416
, 즉 v11
Figure pat00417
보다 크기 때문에 Heap의 엔트리가 존재함에도 불구하고 검색 과정을 중단할 수 있다.
Update of SGI (Social Grid Index)
이하에서는, SGI의 갱신(update)에 대하여 서술한다. 구체적으로, 기본적인 업데이트(basic update)와 효율적인 인덱스 업데이트 기법(efficient index update method)을 위한 친구 인지 매트릭스(FAM, Friend-Aware Matrix)를 순차적으로 기술한다.
1. Basic update
집이나 일터(home or work place)와 같은 각 사용자의 위치(location)와 친구들이 고정된다면, SGI는 변화하지 않을 것이다. 그러나, 실생활에서 데이터 오브젝트들은 그들의 위치 또는 친구 관계를 바꿀 수 있기 때문에 SGI는 적절하게 수정되어야 한다. SGI 업데이트(SGI update)는 SU(Social-Update)와 GU(Geo-Update)를 포함하는 2 가지 유형의 동작들로 구성된다. SU는 SGI 상의 셀들의 친구 셀 리스트를 업데이트하는 것이고, GU는 이동하는 데이터 오브젝트들(moving data objects)의 위치에 따라 각 셀의 구성 요소(elements)를 수정하는 것이다.
도 14는 기본 업데이트의 세부 내용이 포함된 알고리즘을 도시한다. 우선, 데이터 오브젝트
Figure pat00418
의 이전 위치(old(previous) position)
Figure pat00419
와 현재 위치(new(current) position)
Figure pat00420
를 초기화한다(initializes). 이전 셀(old cell)
Figure pat00421
과 현재 셀(new cell)
Figure pat00422
역시 초기화된다(lines 2-3).
Figure pat00423
Figure pat00424
가 동일하면, 이러한 업데이트
Figure pat00425
Figure pat00426
의 친구 업데이트(friend update) 이다(line 5). SU가
Figure pat00427
의 새로운 친구(new friend)를 추가하는 것이라면, 새로운 친구
Figure pat00428
는 단지
Figure pat00429
의 1-홉 친구 리스트
Figure pat00430
에 삽입되고,
Figure pat00431
의 셀
Figure pat00432
역시
Figure pat00433
의 1-홉 친구 셀 리스트
Figure pat00434
에 삽입된다(line 6-9). 기존의 친구(existing friend)
Figure pat00435
를 삭제하는 경우, 알고리즘은
Figure pat00436
Figure pat00437
에서 삭제한다(line 11).
Figure pat00438
가 제외된다 하더라도, 2 개의 데이터 오브젝트들이
Figure pat00439
Figure pat00440
에 남아 있으면
Figure pat00441
Figure pat00442
로부터 제외될 수 없다. 이를 위하여,
Figure pat00443
에 남아있는 데이터 오브젝트들의 친구들을 탐색(traverse)할 필요가 있다(lines 12-20).
반면에,
Figure pat00444
Figure pat00445
가 상이하다면, 이러한 업데이트
Figure pat00446
는 위치 업데이트(location update) 이다.
Figure pat00447
Figure pat00448
가 특히 동일하다면, SGI의 어떠한 업데이트도 불필요하다. 그렇지 않다면, 즉
Figure pat00449
Figure pat00450
가 상이하다면, 두 셀들의 업데이트가 시작된다(lines 21-22).
Figure pat00451
가 다른 셀
Figure pat00452
로 이동하였기 때문에, 알고리즘은
Figure pat00453
로부터
Figure pat00454
를 삭제하고 새로운
Figure pat00455
를 생성한다. 그러면,
Figure pat00456
역시
Figure pat00457
을 탐색(traversing)함으로써 갱신된다(lines 23-32).
Example 11. 도 15는 SGI 업데이트의 5 가지 예를 도시한다. 도 15의 (a) 내지 (c)는 SU의 예(Case 1-3)이고 ,도 15의 (d)는 GU의 예(Case 4)이고, 도 15의 (e)는 SU와 GU가 결합된 GSU(Geo-Social-Update)의 예(Case 5)이다.
Case 1에서, 2 개의 데이터 오브젝트들인
Figure pat00458
Figure pat00459
이 친구가 되기 때문에(즉,
Figure pat00460
), 셀
Figure pat00461
Figure pat00462
의 (1-홉) 친구 셀 리스트에 추가되고,
Figure pat00463
역시
Figure pat00464
의 (1-홉) 친구 셀 리스트에 추가된다. 반면에, Case 2에서,
Figure pat00465
Figure pat00466
는 더 이상 친구가 아니기 때문에
Figure pat00467
Figure pat00468
의 친구 셀 리스트에서 제거된다. Case 3에서
Figure pat00469
가 제거되었음에도 불구하고,
Figure pat00470
가 여전히
Figure pat00471
에 포함되는
Figure pat00472
와 친구이기 때문에, SGI의 어떠한 수정도 불필요하다. 그러나, Case 3의 경우,
Figure pat00473
Figure pat00474
의 친구 셀 리스트에서 제거되었는지 여부를 체크하기 위하여,
Figure pat00475
또는
Figure pat00476
내의 모든 데이터 오브젝트의 친구 리스트들을 탐색(traverse)할 필요가 있다. Case 4의 경우 또한,
Figure pat00477
가 동일한 셀
Figure pat00478
내에서 이동하였기 때문에(그 결과
Figure pat00479
는 여전히 이동 후의
Figure pat00480
를 커버함), SGI를 변경할 필요가 없다.
Case 5에서,
Figure pat00481
의 친구 셀들은
Figure pat00482
Figure pat00483
이고,
Figure pat00484
는 다른 셀(즉,
Figure pat00485
에서
Figure pat00486
로)로 이동한다. 다른 케이스들은 상당히 간단하고 비용(costs)이 높지 않은 반면에, Case 5의 경우 SGI가
Figure pat00487
의 친구 셀 리스트를 변경할지 여부를 결정해야 하기 때문에 복잡하다. 이를 위해, SGI는
Figure pat00488
내의 모든 데이터 오브젝트들의 친구들을 체크한다. 결과적으로,
Figure pat00489
Figure pat00490
의 친구 셀 리스트에 잔존하지만
Figure pat00491
은 배제된다.
5 개의 핵심 예들을 용이하게 적용함으로써, SGI는 모든 케이스들을 처리할 수 있다. 특히, 실생활 예들은 사용자의 위치와 친구를 동시에 변경하는 기능을 갖지 못한다. 다시 말해, 이를 위해 GU(또는 GSU)와 SU가 순차적으로 동작하여야 한다.
2. Update with FAM
매우 많은 데이터 오브젝트들이 빈번하게 이동하는 때에 업데이트 비용을 줄이는 것이 중요하다. 데이터 오브젝트들이 다른 셀들로 이동할 때마다, 친구 셀 리스트들 매우 빈번하게 탐색(traverse)하여야 하고, 그 비용은 매우 높다. 이러한 이유로 실제 활용에 이용하기에는 적절하지 않다. 이를 해결하기 위하여, 정점들(vertices) 사이의 엣지들(edge)의 개수를 기록하는 매트릭스(matrix, 행렬)인 FAM을 제안한다.
Definition 8 (friend-aware matrix, 친구 인지 매트릭스).
Figure pat00492
SGI에 대하여, 비어 있지 않은(non-empty) 각 셀
Figure pat00493
Figure pat00494
매트릭스
Figure pat00495
를 갖는다. 여기서,
Figure pat00496
의 성분(element)
Figure pat00497
는 셀
Figure pat00498
와 다른 셀
Figure pat00499
내의 정점들(vertices)의 엣지들의 개수를 나타낸다.
Figure pat00500
가 아래 수학식 5에 의해 정의되는 FAM(friend-aware matrix, 친구 인지 매트릭스)이다.
Figure pat00501
FAM은 각 셀들이 업데이트 되어야 하는지 여부를 효율적으로 검토할 수 있도록 도와준다. 특히, 친구 리스트들(예, lines 25-28 in Algorithm 6)의 반복적인 탐색(traversal)을 효율적으로 줄일 수 있다. 게다가, FAM과 관련된 동작들(FAM-related operations)은 항상 오리지널 SGI 업데이트(original SGI update) 내에서 수행되기 때문에, FAM을 유지하는 것은 용이하다. 요컨대, FAM을 이용한 SGI 업데이트는 다음 조사(examination)를 이용하여
Figure pat00502
Figure pat00503
-NCF 쿼리 처리를 보조한다.
·FAM 내의 2 개의 요소들(elements)이 '0' 이라면, 대응하는 셀들 내에 친구로서의 데이터 오브젝트는 없다.
·FAM 내의 2 개의 요소들이 '0' 보다 크다면, 대응하는 셀들 내에 친구로서의 데이터 오브젝트들이 적어도 2 개 존재한다.
도 16a는 FAM을 이용한 SGI 업데이트의 상세 알고리즘을 도시하고, 도 16b는 도 16a에 도시된 CheckFAM() 함수의 상세 알고리즘을 도시한다. 대부분의 알고리즘이 기본 기법과 유사하지만, FAM이 비용면에서 효율적인 결과를 만든다. 엣지(edge)를 추가할 때, 이 알고리즘은 FAM의 대응하는 각 요소에 '1'을 더한다(즉, 1 +
Figure pat00504
(lines 10-11, 22-23)). 엣지를 삭제할 때, 친구의 존재를 효율적으로 체크하기 위하여 함수 CheckFAM이 수행된다(lines 14-15, 24-25). CheckFAM에서, FAM의 대응하는 각 요소로부터 1이 감산된다(즉, -1 +
Figure pat00505
).
Example 12. 도 17은 FAM을 이용한 업데이트의 일 예를 도시한다. SGI가 존재하고, 정의 8(Definition 8)에 따라 비어 있지 않은 각 셀(non-empty cell)은 자신의 FAM(2×2 매트릭스)을 갖는다.
Figure pat00506
Figure pat00507
로부터
Figure pat00508
로 이동할 때,
Figure pat00509
의 1-홉 친구 셀 리스트에
Figure pat00510
가 친구 셀로 유지되는지 여부를 체크하여야 한다. 이를 위해, 기본 업데이트 기법(basic update method)은
Figure pat00511
내의 모든 데이터 오브젝트의 친구 리스트들을 탐색(traverse)하여야 한다. 불행히도, SGI 업데이트의 비효율을 야기한다.
Figure pat00512
의 하나의 요소, 즉
Figure pat00513
가 '0'이 아님을 체크하는 것만으로도 쉽게 알 수 있기 때문에, 제안하는 기법은 상술한 기본 기법 보다 효율적이다.
도 18은 본 발명의 일 실시 예에 의한 친구 검색 장치의 기능 블럭도를 도시한다. 도 18을 참조하면, 친구 검색 서버 등으로 명명될 수도 있는 친구 검색 장치(100)는 쿼리 수신부(110), 리스트 생성부(130), 쿼리 처리부(150), 및 저장부(170)를 포함한다. 실시 예에 따라, 친구 검색 장치는 업데이트부(190)를 더 포함할 수도 있다.
친구 검색 장치(100)는 사용자 단말(미도시)로부터
Figure pat00514
Figure pat00515
-NCF 쿼리, 즉 사용자의
Figure pat00516
-홉 친구들 중에서 가장 근접한
Figure pat00517
명의 친구에 대한 검색 요청(또는 사용자와 가장 근접하게 위치한
Figure pat00518
명의
Figure pat00519
-홉 친구들에 대한 검색 요청)을 수신하고, 이에 대한 응답인
Figure pat00520
명의 친구 리스트를 출력한다. 출력된
Figure pat00521
명의 친구 리스트는 상기 사용자 단말로 송신될 수 있다. 이러한 실시예는 상기 사용자가 속한 SNS(Social Network Service)를 제공하는 SNS 서버가 친구 검색 장치(100)일 경우이다.
실시 예에 따라, 친구 검색 장치(100)는 상기 사용자의
Figure pat00522
Figure pat00523
-NCF 쿼리를 SNS 서버를 경유하여 수신할 수도 있다. 친구 검색 장치(100)는
Figure pat00524
명의 친구 리스트를 출력하고, 출력된
Figure pat00525
명의 친구 리스트는 상기 SNS 서버를 경유하여 다시 상기 사용자 단말로 송신될 수 있다. 즉, 이 경우는 SNS 서버와 친구 검색 서비스를 제공하는 서버가 분리되어 있는 경우이다.
상술한 바와 같이, 친구 검색 장치(100)는 SNS 서버로 구현되거나 SNS 서버와는 구별되는 별도의 서버로 구현될 수 있으나, 앞서 상술한 친구 검색 알고리즘들(NCS, FCS, 및 PCS) 중 적어도 하나를 이용하여 쿼리에 대한 응답을 생성할 수 있다.
쿼리 수신부(110)는 사용자 단말 또는 별도의 서버(예컨대, SNS 서버)로부터 사용자
Figure pat00526
Figure pat00527
Figure pat00528
-NCF 쿼리를 수신할 수 있다. 쿼리 수신부(110)에 의해 수신된
Figure pat00529
Figure pat00530
-NCF 쿼리는 저장부(170)에 저장될 수 있다.
리스트 생성부(130)는 사용자
Figure pat00531
Figure pat00532
-홉 친구 리스트
Figure pat00533
와 사용자
Figure pat00534
Figure pat00535
-홉 개인 셀 리스트
Figure pat00536
를 생성한다. 생성된
Figure pat00537
Figure pat00538
는 저장부(170)에 저장될 수 있다.
쿼리 처리부(150)는 NCS, FCS, 및 PCS 중 적어도 하나의 친구 검색 알고리즘을 수행하여 사용자
Figure pat00539
Figure pat00540
Figure pat00541
-NCF 쿼리에 대한 응답을 생성하고, 생성된 응답을 사용자
Figure pat00542
의 단말 또는 별도의 서버(예컨대, SNS 서버)로 송신할 수 있다. 상기 응답이 별도의 서버로 송신된 경우, 상기 별도의 서버는 상기 응답을 상기 사용자 단말로 송신할 수 있다.
쿼리 처리부(150)가 PCS 알고리즘을 이용하여 친구 검색을 수행하는 경우에 대하여 구체적으로 설명하면 다음과 같다.
우선, 쿼리 처리부(150)는 쿼리 사용자, 질의자
Figure pat00543
를 포함하고 있는 셀(쿼리 셀)
Figure pat00544
Figure pat00545
를 둘러싸는 4 개의 직사각형들을 힙
Figure pat00546
에 삽입한다. 오브젝트들을 삽입하기 전에
Figure pat00547
는 초기화될 수도 있으며,
Figure pat00548
에 삽입된 데이터들(오브젝트들)은 항상 해당 오브젝트와 질의 지점
Figure pat00549
사이의 최소 거리
Figure pat00550
의 오름 차순으로 정렬될 수 있다.
이후, 쿼리 처리부(150)는
Figure pat00551
의 엔트리들 중
Figure pat00552
가 가장 작은 엔트리를 추출(또는 디-힙)하고, 아래 사항을 체크한다. 실시예에 따라,
Figure pat00553
의 엔트리들이
Figure pat00554
의 오름 차순으로 정렬되어 있는 경우, 쿼리 처리부(150)는
Figure pat00555
의 첫번째 엔트리를 추출(또는 디-힙)할 수 있다.
즉, 엔트리
Figure pat00556
Figure pat00557
에 속하는
Figure pat00558
의 개인 셀(personal-cell)이면,
Figure pat00559
를 이용하여
Figure pat00560
내의 각 데이터 오브젝트
Figure pat00561
Figure pat00562
Figure pat00563
-홉 친구인지 여부를 결정한다(
Figure pat00564
Figure pat00565
Figure pat00566
-홉 친구라면, 쿼리 처리부(150)는 해당 오브젝트
Figure pat00567
를 결과 집합
Figure pat00568
에 삽입한다).
이와는 다르게, 엔트리
Figure pat00569
가 직사각형이면,
Figure pat00570
내의 모든 친구 셀들과 다음 레벨의 직사각형을
Figure pat00571
에 삽입한다.
쿼리 처리부(150)는 위 과정을 반복적으로 수행하되,
Figure pat00572
의 엔트리가 없거나 다음에 체크될 엔트리(예컨대,
Figure pat00573
의 첫번째 엔트리)의
Figure pat00574
Figure pat00575
보다 크다고 판단되는 경우, 질의 처리(즉, 친구 검색)를 종료한다.
저장부(170)에는
Figure pat00576
Figure pat00577
-NCF 쿼리를 수행하는 과정 중에 이용되는 데이터, 생성되는 데이터 등이 저장될 수 있다. 구체적으로, 저장부(170)에는
Figure pat00578
Figure pat00579
-NCF 쿼리, 각 사용자의 위치 정보, 사용자들 간의 친구 관계 정보, 질의자
Figure pat00580
Figure pat00581
-홉 친구 리스트, 질의자
Figure pat00582
Figure pat00583
-홉 개인 셀 리스트, 질의자
Figure pat00584
Figure pat00585
-홉 친구 셀 리스트, 각 단계에서의
Figure pat00586
등이 저장될 수 있다.
업데이트부(190)는 SGI(Social Grid Index)를 업데이트할 수 있다. 사용자 단말 또는 별도의 서버(예컨대, SNS 서버)로부터 수신되는 각 사용자의 위치와 친구 관계에 대한 정보는 저장부(170)에 저장될 수 있다. 이때, 새로운 위치 정보 또는 새로운 친구 관계에 대한 정보가 수신되는 경우, SGI의 업데이트(갱신) 동작이 필요하다.
업데이트부(190)는 상술한 Basic update와 Update with FAM 알고리즘 중 적어도 하나를 이용하여 SGI를 업데이트할 수 있다. 이하에서는, Update with FAM을 이용한 업데이트 과정에 대하여 상술한다.
우선, 업데이트부(190)는 SGI의 각 셀에 대응하는 매트릭스(예컨대, 상술한 FAM)
Figure pat00587
를 생성할 수 있다. 이때, 오브젝트를 포함하고 있는 셀(non-empty cell)들 각각에 대응하는 매트릭스만 생성될 수도 있다. 또한, 생성된 매트릭스는 SGI의 크기와 동일한 크기를 가질 수 있다. 예컨대,
Figure pat00588
의 SGI가 주어진다면, 생성된 매트릭스의 크기 역시
Figure pat00589
이다.
Figure pat00590
의 성분
Figure pat00591
는 셀
Figure pat00592
와 셀
Figure pat00593
내의 정점들(vertices)의 엣지들의 개수를 나타내며, 이에 대한 구체적인 정의는 수학식 5와 같다.
구체적으로, 업데이트부(190)는 사용자 단말(또는 SNS 서버)로부터 받은 위치 정보 및/또는 친구 관계 정보에 따라 각 매트릭스의 구성(또는 성분)을 수정함으로써 업데이트를 진행할 수 있다. 업데이트부(190)에 의해 성성되거나 갱신된 매트릭스들은 저장부(170)에 저장될 수 있다. 매트릭스들이 저장부(170)에 저장되면, 리스트 생성부(130)는 저장된 매트릭스들을 이용하여 친구 리스트와 개인 셀 리스트를 생성할 수 있다.
본 발명은 상술한 친구 검색 장치(100) 뿐만 아니라, 친구 검색 장치(100)에 의해 수행되는 친구 검색 방법을 포함할 수 있다. 친구 검색 방법에 관한 설명은 상술한 친구 검색 장치(100)의 동작과 동일하기 때문에 이에 대한 상세한 설명은 생략하기로 한다.
이상에서 설명된 친구 검색 장치(100)는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 집합으로 구현될 수 있다. 예를 들어, 실시 예들에서 설명된 장치 및 구성 요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(Digital Signal Processor), 마이크로컴퓨터, FPA(Field Programmable array), PLU(Programmable Logic Unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(Operation System, OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술 분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(Processing Element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(Parallel Processor)와 같은, 다른 처리 구성(Processing Configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(Computer Program), 코드(Code), 명령(Instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(Collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(Component), 물리적 장치, 가상 장치(Virtual Equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(Signal Wave)에 영구적으로, 또는 일시적으로 구체화(Embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 좋ㅂ하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-optical Media), 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시 예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성 요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성 요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100 : 친구 검색 장치
110 : 쿼리 수신부
130 : 리스트 생성부
150 : 쿼리 처리부
170 : 저장부
190 : 업데이트부

Claims (9)

  1. 셀들(cells)로 구성되고, 사용자들 각각을 나타내는 정점(vertex,
    Figure pat00594
    )의 집합(
    Figure pat00595
    )과 상기 사용자들 사이의 친구 관계를 나타내는 엣지(edge,
    Figure pat00596
    )의 집합(
    Figure pat00597
    )으로 구성된 비방향성 그래프(undirected graph,
    Figure pat00598
    )가 반영된 그리드(grid) 상에서 쿼리를 처리하는 친구 검색 장치에 있어서,
    질의자(query issuer,
    Figure pat00599
    ), 질의 지점(query point,
    Figure pat00600
    ), 검색 결과의 개수(
    Figure pat00601
    ,
    Figure pat00602
    는 자연수), 및 친밀도(
    Figure pat00603
    ,
    Figure pat00604
    은 자연수)를 포함하고 상기 질의자(
    Figure pat00605
    )의
    Figure pat00606
    -홉 친구들 중 상기 질의 지점(
    Figure pat00607
    )으로부터 가장 가까운
    Figure pat00608
    명에 대한 검색 요청인
    Figure pat00609
    Figure pat00610
    -NCF 쿼리(
    Figure pat00611
    -Nearest
    Figure pat00612
    -Close Friends query,
    Figure pat00613
    Figure pat00614
    은 자연수)를 수신하는 쿼리 수신부;
    상기 질의자(
    Figure pat00615
    )의
    Figure pat00616
    -홉 친구 리스트(
    Figure pat00617
    )와 상기 질의자(
    Figure pat00618
    )의
    Figure pat00619
    -홉 친구가 포함된 셀들의 리스트인
    Figure pat00620
    -홉 개인 셀 리스트(
    Figure pat00621
    )를 생성하는 리스트 생성부; 및
    상기
    Figure pat00622
    -홉 친구 리스트(
    Figure pat00623
    )와 상기
    Figure pat00624
    -홉 개인 셀 리스트(
    Figure pat00625
    )를 이용하여 상기
    Figure pat00626
    Figure pat00627
    -NCF 쿼리에 대한 응답을 생성하는 쿼리 처리부를 포함하는 친구 검색 장치.
  2. 제1항에 있어서,
    상기 쿼리 처리부는 상기 그리드 상에서 상기 질의 지점(
    Figure pat00628
    )이 포함된 쿼리 셀(
    Figure pat00629
    )과 상기 쿼리 셀(
    Figure pat00630
    )를 둘러싸는 4 개의 직사각형들(rectangles)을 초기화된 힙(heap,
    Figure pat00631
    )에 삽입하고,
    상기 그리드 상의 직사각형은 위(up), 아래(down), 왼쪽(left) 또는 오른쪽(right)을 포함하는 방향(direction)과 해당 직사각형과 상기 쿼리 셀(
    Figure pat00632
    ) 사이에 존재하는 직사각형의 개수인 레벨 넘버(level number)로 표현되고,
    동일한 레벨 넘버를 갖는 직사각형들은 동일한 개수의 셀을 포함하는,
    친구 검색 장치.
  3. 제2항에 있어서,
    상기 힙(
    Figure pat00633
    )의 엔트리(entry)들은 상기 질의 지점(
    Figure pat00634
    )과의 최소 거리(
    Figure pat00635
    )의 오름 차순으로 정렬되는,
    친구 검색 장치.
  4. 제2항에 있어서,
    상기 쿼리 처리부는 상기 힙(
    Figure pat00636
    )의 엔트리들 중 상기 질의 지점(
    Figure pat00637
    )과의 최소 거리가 가장 작은 엔트리를 디-힙(de-heap)하는,
    친구 검색 장치.
  5. 제4항에 있어서,
    상기 쿼리 처리부는,
    디-힙된 엔트리(
    Figure pat00638
    )가 상기
    Figure pat00639
    -홉 개인 셀 리스트(
    Figure pat00640
    )에 포함되는 셀이면, 디-힙된 엔트리(
    Figure pat00641
    ) 내에 포함된 정점 중 상기
    Figure pat00642
    -홉 친구 리스트(
    Figure pat00643
    )에 포함되는 정점을 결과 집합(
    Figure pat00644
    )에 삽입하고,
    디-힙된 엔트리(
    Figure pat00645
    )가 직사각형이면, 상기 직사각형 내의 모든 셀들과 동일한 방향에서 다음 레벨의 직사각형을 상기 힙(
    Figure pat00646
    )에 삽입하는,
    친구 검색 장치.
  6. 제5항에 있어서,
    상기 쿼리 처리부는,
    상기 힙(
    Figure pat00647
    )에 포함된 엔트리가 없거나 상기 결과 집합(
    Figure pat00648
    )의
    Figure pat00649
    번째 원소(component)와 상기 질의 지점(
    Figure pat00650
    ) 사이의 최소 거리(
    Figure pat00651
    )가 디-힙된 엔트리(
    Figure pat00652
    )와 상기 질의 지점(
    Figure pat00653
    )과의 최소 거리(
    Figure pat00654
    ) 보다 작아질 때까지,
    상기 질의 지점(
    Figure pat00655
    )과의 최소 거리가 가장 작은 엔트리를 디-힙하는 동작, 상기
    Figure pat00656
    -홉 친구 리스트(
    Figure pat00657
    )에 포함되는 정점을 결과 집합(
    Figure pat00658
    )에 삽입하는 동작, 및 상기 직사각형 내의 모든 셀들과 동일한 방향에서 다음 레벨의 직사각형을 상기 힙(
    Figure pat00659
    )에 삽입하는 동작을 반복적으로 수행하는,
    친구 검색 장치.
  7. 제6항에 있어서,
    상기 쿼리 처리부는 상기 결과 집합(
    Figure pat00660
    )을 상기 응답으로 출력하는,
    친구 검색 장치.
  8. 제7항에 있어서,
    상기 그리드에 포함된 복수의 셀들 중 적어도 하나의 정점을 포함하는 셀들 각각에 대응하는 매트릭스(matrix,
    Figure pat00661
    )를 생성하는 업데이트부를 더 포함하고,
    상기 매트릭스(
    Figure pat00662
    )는 상기 그리드의 크기와 동일한 크기를 갖고,
    상기 매트릭스(
    Figure pat00663
    )의 성분(element,
    Figure pat00664
    )은 상기 매트릭스(
    Figure pat00665
    )에 대응하는 셀(
    Figure pat00666
    )과 임의의 셀(
    Figure pat00667
    ) 내의 정점들 사이의 엣지(edge)의 개수를 나타내는,
    친구 검색 장치.
  9. 제8항에 있어서,
    상기 업데이트부는 임의의 사용자의 위치 변경 정보와 친구 관계 변동 정보 중 적어도 하나를 수신하고 수신된 정보에 대응하도록 상기 매트릭스를 업데이트하는,
    친구 검색 장치.
KR1020190072650A 2018-08-27 2019-06-19 최근접 친구 검색 장치 KR102172236B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180100510 2018-08-27
KR20180100510 2018-08-27

Publications (2)

Publication Number Publication Date
KR20200024074A true KR20200024074A (ko) 2020-03-06
KR102172236B1 KR102172236B1 (ko) 2020-10-30

Family

ID=69802426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190072650A KR102172236B1 (ko) 2018-08-27 2019-06-19 최근접 친구 검색 장치

Country Status (1)

Country Link
KR (1) KR102172236B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140026305A (ko) 2012-08-24 2014-03-05 삼성전자주식회사 친구 추천 방법 및 이를 위한 서버 및 단말
KR101760600B1 (ko) 2016-01-21 2017-07-24 한양대학교 에리카산학협력단 근접 기반 모바일 소셜 네트워크에서 비신뢰 브로커 기반 친구 검색 방법 및 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140026305A (ko) 2012-08-24 2014-03-05 삼성전자주식회사 친구 추천 방법 및 이를 위한 서버 및 단말
KR101760600B1 (ko) 2016-01-21 2017-07-24 한양대학교 에리카산학협력단 근접 기반 모바일 소셜 네트워크에서 비신뢰 브로커 기반 친구 검색 방법 및 시스템

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
C. Shim, W. Kim, W. Heo, S. Yi, C.Y. Dohn, l-Close range friends query on social grid index, IEICE Trans. Inf. Syst. 100 (4) (2017) 811-812.
Hasan M. et al., "Efficient Algorithms to Monitor Continuous Constrained k Nearest Neighbor Queries"* *
K. Mouratidis, D. Papadias, M. Hadjieleftheriou, Conceptual partitioning: an efficient method for continuous nearest neighbor monitoring, in: Proceedings of the 2005 ACM SIGMOD International Conference on Management of Data, ACM, 2005, pp. 634-645.
Shim, C. et al., "l-Close range friends query on social grid index"* *

Also Published As

Publication number Publication date
KR102172236B1 (ko) 2020-10-30

Similar Documents

Publication Publication Date Title
Li et al. HybridORAM: Practical oblivious cloud storage with constant bandwidth
Chestnut et al. Hardness and approximation for network flow interdiction
US9275422B2 (en) Distributed k-core view materialization and maintenance for graphs
CN109783076A (zh) 基于git的代码管理方法、装置、设备和存储介质
CN102999562B (zh) 路由查询结果
KR20170103949A (ko) 데이터 처리 시스템, 계산 노드 및 데이터 처리 방법
JP6608972B2 (ja) ソーシャルネットワークに基づいてグループを探索する方法、デバイス、サーバ及び記憶媒体
Duarte et al. Improved heuristics for the regenerator location problem
EP3513306B1 (en) N-way hash join
CN105229639A (zh) 短词散列
Shim et al. Nearest close friend search in geo-social networks
CN108040321B (zh) 一种路网环境下抗重放攻击的位置匿名方法
CN117235285B (zh) 融合知识图谱数据的方法及装置
KR102172236B1 (ko) 최근접 친구 검색 장치
Liu A faster algorithm for the constrained minimum covering circle problem to expedite solving p‐center problems in an irregularly shaped area with holes
CN103064872B (zh) 使用数据结构处理搜索查询
Fuentes-Sepúlveda et al. Implementing the topological model succinctly
CN106326295A (zh) 语义数据的存储方法及装置
Schumann Group theory and p‐adic valued models of swarm behaviour
CN102420761B (zh) 一种路由迭代方法
Li et al. Distributed privacy preserving technology in dynamic networks
Hashem et al. Trip planning queries for subgroups in spatial databases
Fujisawa et al. Edge proximity conditions for extendability in planar triangulations
Rayhan et al. Efficient scheduling of generalized group trips in road networks
Xu et al. Variable-dimension swarm meta-heuristic for the optimal placement of relay nodes in wireless sensor networks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant