Lista de LISP (turma B e MC600)

Instruções:

Coloque apenas as funções pedidas (mais as funções auxiliares) no arquivo "ra123456.lsp" se seu RA é 123456. Não coloque no arquivo os seus testes.

Me mande um email com o titulo "MC336 lista 4" e com o arquivo como attachment Isso é importante. Precisa ser ATTACHMENT - verifique que seu emailer não inclue no corpo da mensagem attachments em texto.

Problemas

Problema 1

Dado uma lista da forma ((a b 13) (c a 8) ...) que representa um grafo nao direcionado, nde existe uma aresta entre a e b com custo 13, uma aresta entre a e c com custo 8, etc.

Escreva a função min-span-tree que dado um um grafo acima, retorna uma lista (( a b 13) (d a 1) ...) onde a lista representa a minimum cost spanning tree do grafo original.

Há dois algoritmos classicos para calcular a minimum cost spanning tree, os algoritmos de Prim e de Kruskal. Veja na Iternet ou num livro de algoritmos como são esses algoritmos e implemente um deles na funcao min-span-tree

A ordem das arestas na spanning tree nao é importante, e a ordem dos nós dentro de cada aresta tambem não é, mas cada aresta teve tre seu custo.

Se existir mais de uma minimum cost spanning tree, retorne qualque uma delas

Abaixo um exemplo de grafo e a min-cost spanning tree. O grafo original é representado por

((a b 13) (a c 8) (a d 1) (c b 15) (e c 3) (d c 5) (d e 4) (d f 5) (f e 2)) e o resultado é o grafo ((a b 13) (a d 1) (e c 3) (d e 4) (f e 2)) que poderia ser retornado também como (( f e 2) (a d 1) ( b a 13) (e c 3) (d e 4) )

Problema 2

Escreva a função prof-media que dado um atomo e uma lista que contém sublistas, e subsublistas, etc, retorna a media das profundidades do atomo na lista. Elementos da lista estão a profundidade 1, elementos das sublistas a profundidade 2, etc. Se o atomo não aparece na lista (em nenhuma profundidade), a função deve retornas NIL

Problema 3

Considere uma lista com 3 sublistas. A primeira sublista é da forma ((abel bela 1983) (abel carla 1997) (ivan dolores 2003) ...) indica que o homem abel casou com a mulher bela em 1983, que o mesmo abel casou com a mulher carla em 1997, e que ivan casou com dolores em 2003.

A segunda sublista é da forma ((abel bela 1990) (abel carla 2003) ...) que indica que abel se separou de bela em 1990, e se separou de carla em 2003, etc

A terceira sublista é da forma (( bela 2001) (ivan 2004) ...) que indica que bela morreu em 2001, e ivan morreu em 2004.

Assuma que uma pessoa só se casa no maximo 1 vez por ano, e se separa no minimo no ano seguinte. Assuma tambem que os dados sao consistentes, por exemplo, que nenhum morto se casa, que as pessoas nao são bigamas, não trocam de sexo, etc.

Escreva a função viuvos que dado uma lista com as tres sublistas retorna uma lista com todos os viuvos homens, isto é, homens que estavam casados com uma mulher que morreu. Os viuvos não precisam estar vivos em 2006.

Problema 4

Dado um arquivo que contem dados da forma (joao maria 500) que indica que Joao deve 500 reais a Maria. Escreva a função credores que dado o nome de um arquivo acima, retorna a lista dos dois maiores credores liquidos (pessoas que emprestaram mais dinheiro para os outros subtraindo o que elas estão devendo). Se mais de 2 pessoas tem o mesmo credito, retorne quaisquer duas delas.