Add comments to network module.

main
Edward L Platt 5 years ago
parent bfeb06df7e
commit 6028cafaef

@ -1,13 +1,64 @@
;; Copyright 2019 Edward L. Platt <elplatt@alum.mit.edu>
;;
;; TODO: comments and tests
;; This module implements a family of graphs based on permutations of
;; sylvester-radix numbers.
#lang racket
(provide
;; Generate the list of graph nodes.
;;
;; Params:
;; m: Dimensionality of sylvester-radix numbers used as vertices.
;;
;; Example:
;; > (sylvester-nodes 2)
;; '((0 0) (1 0) (0 1) (1 1) (0 2) (1 2))
sylvester-nodes
;; Generate the list of directed graph edges.
;;
;; Params:
;; m: Dimensionality of sylvester-radix numbers used as vertices.
;;
;; Example:
;; > (sylvester-edges 1)
;; '(((0) (1)) ((1) (0)))
sylvester-edges
sylvester-undirected-edges)
;; Generate the list of undirected graph edges.
;;
;; Params:
;; m: Dimensionality of sylvester-radix numbers used as vertices.
;;
;; Example:
;; > (sylvester-undirected-edges 1)
;; '(((1) (0)))
sylvester-undirected-edges
;; Create cyclic permutation operator for one digit of sylvester-radix number.
;;
;; Params:
;; i: Index of digit to permute.
;; n: Number of times to cycle digit.
;;
;; Example:
;; > ((cycle-sylvester-radix 2 1) '(0 0 0 0))
;; '(0 0 1 0)
cycle-sylvester-radix
;; Create skip operator.
;; The skip operator is a composition of single-digit cyclic permutations.
;; Skip operators are used to generate the graph edges.
;;
;; Params:
;; i: Results in an operator acting on the lowest i digits.
;;
;; Example:
;; > ((skip-sylvester-radix 2) '(0 0 0))
;; '(1 2 6)
skip-sylvester-radix)
(require "sylvester.rkt")
@ -33,7 +84,7 @@
(define (sylvester-color-edge k)
(lambda (v) (list v ((skip-sylvester-radix k) v))))
(define (permutation-sylvester-radix i n)
(define (cycle-sylvester-radix i n)
(lambda (v)
(let* ([v ((extend-sylvester-radix (+ i 1)) v)]
[head (take v i)]
@ -49,9 +100,9 @@
(define (skip-sylvester-radix i)
(lambda (v)
(if (= i 0)
((permutation-sylvester-radix 0 1) v)
((cycle-sylvester-radix 0 1) v)
(let* ([prev (skip-sylvester-radix (- i 1))]
[partial (take v (min i (length v)))]
[value (sylvester-radix-value (prev partial))])
((compose (permutation-sylvester-radix i (+ 1 value)) prev) v)))))
((compose (cycle-sylvester-radix i (+ 1 value)) prev) v)))))
Loading…
Cancel
Save