Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////
- // ALGORITMO DEL PROGRAMA //
- ////////////////////////////
- DEFINE: <STARDATE> "25000" :fin-DEFINE
- FUNCION BellmanFord( <matriz>, <inicio>, <destino> ):
- - Declarar un contenedor <distancias> de elementos de tipo numérico
- - Dimensonar el número de elementos de <distancias> al mismo número de elementos que <matriz>
- - Declarar una variable <i> de tipo numérico
- - Asignara a <i> el valor "0"
- MIENTRAS( <i> sea menor que el número de elementos de <distancias> ):
- - Asignar al elemento <i> de <distancias> el valor del elemento <i> del elemento <inicio> de <matriz>
- - Incrementar <i> en una unidad
- :fin-MIENTRAS
- - Asignar al elemento <inicio> de <distancias> el valor <STARDATE>
- - Declarar una variable <x> de tipo numérico
- - Declarar una variable <y> de tipo numérico
- - Declarar una variable <tmp> de tipo numérico
- - Asignara a <i> el valor "0"
- MIENTRAS( <i> sea menor que el número de elementos de <distancias> ):
- - Asignara a <x> el valor "0"
- MIENTRAS( <x> sea menor que el número de elementos de <distancias> ):
- - Asignara a <y> el valor "0"
- SI( el valor del elemento <x> de <distancias> no es "infinito" ):
- MIENTRAS( <y> sea menor que el número de elementos de <distancias> ):
- SI( el elemento <y> del elemento <inicio> de <matriz> no es "infinito" ):
- - Asignar a <tmp> el valor ( (el elemento <x> de <distancias>) más (el elemento <y> del elemento <inicio> de <matriz>) )
- SI( el valor de <tmp> es menor que el valor del elemento <y> de <distancias> ):
- - Incrementar <y> en una unidad
- :fin-SI
- :fin-SI
- :fin-MIENTRAS
- :fin-SI
- :fin-MIENTRAS
- :fin-MIENTRAS
- - Asignara a <x> el valor "0"
- MIENTRAS( <x> sea menor que el número de elementos de <distancias> ):
- - Asignara a <y> el valor "0"
- SI( el valor del elemento <x> de <distancias> no es "infinito" ):
- MIENTRAS( <y> sea menor que el número de elementos de <distancias> ):
- SI( el elemento <y> del elemento <inicio> de <matriz> no es "infinito" ):
- - Asignar a <tmp> el valor ( (el elemento <x> de <distancias>) más (el elemento <y> del elemento <inicio> de <matriz>) )
- SI( el valor de <tmp> es menor que el valor del elemento <y> de <distancias> ):
- RETORNA( "infinito" )
- :sal-FUNCION
- :fin-SI
- :fin-SI
- :fin-MIENTRAS
- :fin-SI
- :fin-MIENTRAS
- RETORNA( el valor del elemento <destino> de <distancias> )
- :fin-FUNCION
- PROGRAMA:
- - Declarar una variable <numeroPlanteas> de tipo numérico
- - Declarar una variable <indiceOrigen> de tipo numérico
- - Declarar una variable <indiceDestino> de tipo numérico
- - Declarar una variable <indice1> de tipo numérico
- - Declarar una variable <indice2> de tipo numérico
- - Declarar una variable <distancia> de tipo numérico
- - Declarar un contenedor <matriz> de elementos de tipo contenedor de elementos de tipo numérico
- REPETIR mientras( queden líneas ):
- - Leer un número y almacenarlo en <numeroPlanteas>
- - Leer un número y almacenarlo en <indiceOrigen>
- - Leer un número y almacenarlo en <indiceDestino>
- - Dimensionar el número de elementos de los elementos de <matriz> al valor de <numeroPlanteas> // matriz cuadrada de "<numeroPlanteas> x <numeroPlanteas>"
- - Inicializar cada elemento de todos los elementos de <matri> al valor "infinito"
- REPETIR mientras( queden datos en la línea ):
- - Leer un número y almacenarlo en <indice1>
- - Leer un número y almacenarlo en <indice2>
- - Leer un número y almacenarlo en <distancia>
- - Asignar al elemento <indice2> del elemento <indice1> de <matriz> el valor <distancia>
- :fin-REPETIR
- - Asignar a <distancia> el valor retornado por <BellmanFord( <matriz>, <indiceOrigen>, <indiceDestino> )>
- SI( el valor de <distancia> es "infinito" ):
- - Mostrar "BAZINGA"
- :SI-NO:
- - Mostrar <distancia>
- :fin-SI
- :fin-REPETIR
- :fin-PROGRAMA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement