File tree Expand file tree Collapse file tree 1 file changed +4
-6
lines changed Expand file tree Collapse file tree 1 file changed +4
-6
lines changed Original file line number Diff line number Diff line change 192
192
;; spanning-tree : HyperGraph -> (Listof (List Index (Setof NTName))) (Listof NTName)
193
193
(define (spanning-tree hg)
194
194
(define init-vertices (hash-keys hg))
195
- (let loop ([sinks (set)]
196
- [edges (hash)]
195
+ (let loop ([edges (hash)]
197
196
[vertices init-vertices]
198
197
[time (length init-vertices)])
199
198
(cond
202
201
[else
203
202
(match-define (cons v vs) vertices)
204
203
(define good-edge
205
- (findf (λ (e) (andmap (λ (v ) (set- member? sinks v )) (set->list (second e))))
204
+ (findf (λ (e) (andmap (λ (v2 ) (not ( member v2 vertices) )) (set->list (second e))))
206
205
(hash-ref hg v)))
207
206
(cond [good-edge
208
- (loop (set-add sinks v)
209
- (hash-set edges v good-edge)
207
+ (loop (hash-set edges v good-edge)
210
208
vs
211
209
(sub1 time ))]
212
210
[else
213
- (loop sinks edges (append vs (list v)) (sub1 time ))])])))
211
+ (loop edges (append vs (list v)) (sub1 time ))])])))
214
212
215
213
;; A HyperGraph is a Hash NTName (Listof (List Index (Setof NTName)))
216
214
;; associating each non-terminal to a list of out-going edges
You can’t perform that action at this time.
0 commit comments