Схема, списки и теория графов - PullRequest
0 голосов
/ 02 октября 2011

Я пытаюсь разработать функцию Scheme, которая будет принимать график, как определено:

(define aGraph
     '{{USA {Canada Mexico}}
       {Mexico {USA}}
       {Canada {USA}}})

и находить количество узлов, граничащих с указанным узлом графика.Я считаю, что я подхожу к этой проблеме неправильно;вот что я сделал до сих пор:

(define (nodes n graph)
      (cond ((null? n) '())
      (else
      (cond ((eqv? n (first graph)) (length (first graph)))
      (else (nodes n (rest graph)))))))

Само собой разумеется, это не работает (функция может быть вызвана следующим образом: (узлы 'USA aGraph), которая в теории должна возвращать 2),Какой совет вы можете дать, чтобы я мог встать на правильный путь?

1 Ответ

1 голос
/ 02 октября 2011

Давайте рассмотрим эту строку:

  (cond ((eqv? n (first graph)) (length (first graph)))

Вы рассматриваете (first graph) как ключ узла в (eqv? n (first graph)) и как граничащие узлы в (length (first graph)) - возможно, это будет работать лучше:

  (cond ((eqv? n (first (first graph))) (length (second (first graph))))
...