Conor McBride의 일부 작품 인 Diff , Dissect 는 데이터 유형의 파생물을 "단일 컨텍스트 유형"과 관련시킵니다. 즉, 유형의 미분을 취하면 데이터 유형이 주어진 지점에서 내부에서 어떻게 보이는지 보여주는 데이터 유형이 남습니다.
예를 들어 (Haskell에) 목록이 있다면
data List a = [] | a : List a
이것은에 해당
data List a = 1 + a * List a
약간의 수학적 마술을 통해 미분은
data ListDeriv a = List a * List a
이는 목록의 어느 시점에서든 왼쪽에 목록이 있고 오른쪽에 목록이 있음을 의미하는 것으로 해석됩니다. 미분 데이터 구조를 사용하여 원래 목록을 압축 할 수 있습니다.
저는 그래프와 비슷한 일을하고 싶습니다. 그래프의 일반적인 표현은 다음과 같은 데이터 유형으로 순진하게 구현 될 수있는 정점과 모서리의 집합입니다.
data Gr a b i = Gr [(i,a)] [(i,i,b)]
내가 올바르게 이해하면 그래프 색인과 관련 하여이 데이터 유형의 파생물은 i
비슷해야합니다.
data GrDeriv a b i = d/di (Gr a b i)
= d\di ( [a*i] * [b*i^2] )
= (d\di [a*i]) * [b*i^2] ) + [a*i]*(d/di [b*i^2])
= (a* [a*i] * [a*i]) * [b*i^2] )
+ [a*i] * (2*b*i) *[b*i^2]*[b*i^2])
= InNodes { nodesLeft :: [(a,i)]
, nodeLbl :: a
, nodesRight :: [(a,i)]
, edges :: [(b,i,i)] }
| InEdges { nodes :: [(a,i)]
, adjNode :: Either (b,i) (b,i)
, edgesLeft :: [(b,i,i)]
, edgesRight :: [(b,i,i)] }
파생 상품에 대해 제품 규칙 및 체인 규칙을 사용하여 이것을 얻었으며 약간의 오류가있을 수는 있지만 일반적인 계획을 따르는 것 같습니다. 이 구조에서는 Nodes (InNodes 생성자) 또는 Edges (Edges)에 중점을두고 관련 데이터를 볼 수있는 곳이 주어집니다.
그러나 이것은 내가 바랐던 것이 아닙니다. Martin Erwigs Functional Graph Library의 인터페이스와 더 밀접한 관련이있는 구조를 원했습니다. 특히, 노드의 레이블과 두 개의 인접 목록 (발 신용, 수 신용)을 나타내는 컨텍스트를 노드에서보고 싶습니다.
Node a b = ([(i,b)],a,[(i,b)])
그러나 인접성 표현이 파생물, 고독한 lable, a
각 구멍 위치에서 각 모서리의 인접성 표현 / 해부 와 공통 인 용어가 있기 때문에 희망이 있습니다.
미분은 원래와 동일한 기능이 아니지만 미분의 통합은 (종류), 미분을 노드 컨텍스트의 모음으로 변환하는 데 사용되는 일종의 통합 아날로그가 있습니까? 원래 구조를 복구하기위한 직접 통합은 아니지만, 원래 구조와 동일하지만보다 알고리즘 친화적 인 구조로 된 구조입니다.
있는 경우 관계 유형 구조를 "정점과 모서리의 쉬운"언어로 지정할 수 있기를 바라며 해당 구조를 사용하기위한 효율적인 라이브러리를 도출 할 수 있습니다. 이러한 구현은 "그래프 이론을 넘어서"구조를 연구하는 데 사용될 수 있습니다 : 하이퍼 그래프, 단순화 복합 ...
그래서. 이 아이디어가 실현 가능한 것 같습니까? 유능한? 내가 읽을 수있는 이런 유형의 것에 대한 연구가 있습니까?
추가
Curtis F가 언급했듯이 노드와 모서리 세트는 정확히 그래프가 아닙니다. 그러나 모든 그래프는 그러한 것으로 나타낼 수 있으며, 나는 그것이 충분히 일반적인 표현이라는 것을 알았습니다. 나는 무선 네트워크의 최적화에 다양한 방법으로 그래프 이론을 적용하는 연구에 사용 된 매우 거친 사양) 보았습니다 . 다음은 공개 액세스 예인 DRAND *입니다. 이것은 연구, 프레젠테이션에 기초한 프레젠테이션과 일부 소프트웨어가 어떻게 구현 될 수있는 가라는 문제를 제기합니다.
즉, 입력 사양을 에서 다른 것으로 변경하는 것에 전적으로 반대하지 않습니다 . 예를 들어, 색인 유형 , 노드 레이블 및 가장자리 레이블 됩니다. 그런 다음 그래프는 인덱스에서 레이블 및 가장자리 목록까지의 함수입니다.I
이것은 (범주 이론?)으로 표현 될 수 있다고 확신합니다.
또는
이것은 충분한주의 사항이 주어진 정점과 모서리의 집합으로 볼 수 있습니다. 그러나 의 미분 이 의미가 있는지 명확하지 않습니다 .
나는 그것이 어떤 약속을 보여 준다고 생각하지만, 더 나아갈 정교함이 부족합니다. 나는 더 많은 연결을 탐구해야 할 일이 있다는 것을 안다.
* 연결이 끊어 질 경우 인용 : Rhee, Injong, et al. "DRAND : 무선 애드혹 네트워크를위한 분산 무작위 TDMA 스케줄링." 모바일 컴퓨팅 8.10 (2009)의 IEEE 트랜잭션 : 1384-1396.