private List <EntNodo> ValidaUltimoNodo(List <string> lstDatos, List <EntNodo> lstEntNodo) { List <EntNodo> lstEntNodoAux = new List <EntNodo>(); lstEntNodoAux.AddRange(lstEntNodo); bool agrega; for (int i = 0; i < lstDatos.Count; i++) { agrega = true; string[] datos = lstDatos[i].Split(' '); for (int j = 0; j < lstEntNodoAux.Count; j++) { if (datos[1] == lstEntNodoAux[j].nombreNodo) { agrega = false; break; } } if (agrega) { EntNodo oEntNodo = CreaNodo(datos[1], lstEntNodoAux.Count + 1); lstEntNodoAux.Add(oEntNodo); } } return(lstEntNodoAux); }
private EntNodo CreaNodo(string nombreNodo, int identificador) { EntNodo oEntNodo = new EntNodo(); oEntNodo.nombreNodo = nombreNodo; oEntNodo.idNodo = identificador; return(oEntNodo); }
public EntContenedor AplicaAlgoritmo(EntContenedor oEntContenedor, TipoAlgoritmo eTipoAlgoritmo) { string camino = string.Empty; string nodoHijo = string.Empty; string nodoPadre = string.Empty; int aux = 0; try { for (int i = 0; i < oEntContenedor.lstEntNodo.Count; i++) { EntNodo oEntNodo = oEntContenedor.lstEntNodo[i]; if (i == 0) { oEntNodo.esSeleccionado = true; oEntNodo.nodoPrevio = oEntNodo.nombreNodo; nodoHijo = oEntNodo.nombreNodo; nodoPadre = oEntNodo.nombreNodo; if (eTipoAlgoritmo == TipoAlgoritmo.Greedy) { oEntContenedor.lstEntNodo = this.ActualizaVertices(oEntContenedor.lstEntNodo, oEntNodo.idNodo); } oEntContenedor.lstResultados.Add(this.CreaResultado(aux, nodoPadre)); } if (oEntNodo.nombreNodo == nodoHijo) { oEntNodo.esSeleccionado = true; oEntNodo.nodoPrevio = nodoPadre; oEntNodo.peso = aux; oEntNodo.lstEntVertice = this.OrdenaLista(oEntNodo.lstEntVertice); for (int j = 0; j < oEntNodo.lstEntVertice.Count; j++) { EntVertice oEntVertice = oEntNodo.lstEntVertice[j]; if (j == 0) { i = oEntVertice.idNodo - 2; aux = oEntNodo.peso + oEntVertice.peso; nodoHijo = oEntVertice.nombreNodo; } oEntContenedor.lstEntNodo = this.ActualizaVertices(oEntContenedor.lstEntNodo, oEntVertice.idNodo); } nodoPadre = oEntNodo.nombreNodo; if (eTipoAlgoritmo == TipoAlgoritmo.Greedy) { oEntContenedor.lstEntNodo = this.ActualizaVerticesHijos(oEntContenedor.lstEntNodo, oEntNodo); } oEntContenedor.lstResultados.Add(this.CreaResultado(aux, nodoPadre)); } } } catch (Exception ex) { oEntContenedor.mensajeError = ex.Message; oEntContenedor.eTipoError = TipoError.Error; } return(oEntContenedor); }
private List <EntNodo> ActualizaVertices(List <EntNodo> lstEntNodo, int identificador) { for (int i = 0; i < lstEntNodo.Count; i++) { EntNodo oEntNodo = lstEntNodo[i]; for (int j = 0; j < lstEntNodo[i].lstEntVertice.Count; j++) { if (lstEntNodo[i].lstEntVertice[j].idNodo == identificador) { oEntNodo.lstEntVertice.Remove(lstEntNodo[i].lstEntVertice[j]); j--; } } } return(lstEntNodo); }
private List <EntNodo> ActualizaVerticesHijos(List <EntNodo> lstEntNodo, EntNodo oEntNodo) { for (int i = 0; i < oEntNodo.lstEntVertice.Count; i++) { EntVertice oEntVertice = oEntNodo.lstEntVertice[i]; for (int j = 0; j < lstEntNodo.Count; j++) { for (int x = 0; x < lstEntNodo[j].lstEntVertice.Count; x++) { EntVertice oEntVerticeB = lstEntNodo[j].lstEntVertice[x]; if (oEntVertice.idNodo == oEntVerticeB.idNodo && oEntVerticeB.idNodo != lstEntNodo.Count) { lstEntNodo[j].lstEntVertice.Remove(oEntVerticeB); x--; } } } } return(lstEntNodo); }
private List <EntNodo> ActualizaIdVertices(List <EntNodo> lstEntNodo) { for (int i = 0; i < lstEntNodo.Count; i++) { EntNodo oEntNodo = lstEntNodo[i]; for (int x = 0; x < lstEntNodo.Count; x++) { EntNodo oEntNodoB = lstEntNodo[x]; for (int j = 0; j < oEntNodoB.lstEntVertice.Count; j++) { EntVertice oEntVertice = oEntNodoB.lstEntVertice[j]; if (oEntVertice.nombreNodo == oEntNodo.nombreNodo) { oEntVertice.idNodo = oEntNodo.idNodo; } } } } return(lstEntNodo); }