Exemple #1
0
	Conj<Lista<Compu> > Red::CaminosMin(const Compu& c1,const Compu& c2) {
		assert( Esta( Computadoras(), c1 ) );
		assert( Esta( Computadoras(), c2 ) );
		assert( HayCamino(c1, c2) );

		return *(this->caminosMasCortos.obtener(c1.Ip()))->obtener(c2.Ip());
	}
Exemple #2
0
	void Red::Conectar(const Compu& c1,const Compu& c2,Nat& i1, Nat& i2) {
		assert( this->vecinos.definido(c1.Ip()) && this->vecinos.definido(c2.Ip()) );
		assert( Esta( Computadoras(), c1 ) );
		assert( Esta( Computadoras(), c2 ) );
		assert( c1.Interfaces().Pertenece(i1) );
		assert( c2.Interfaces().Pertenece(i2) );
		assert( !UsaInterfaz(c1, i1) );
		assert( !UsaInterfaz(c2, i2) );

		this->vecinos.obtener(c1.Ip())->AgregarRapido(c2);
		this->vecinos.obtener(c2.Ip())->AgregarRapido(c1);
		this->usaInterfaz.obtener(c1.Ip())->operator [](i1) = true;
		this->usaInterfaz.obtener(c2.Ip())->operator [](i2) = true;
		this->interfaz.obtener(c1.Ip())->definir(c2.Ip(),i1);
		this->interfaz.obtener(c2.Ip())->definir(c1.Ip(),i2);

		ActualizarCaminos(c1, c2);

		//Actualiza todos los caminos posibles sobre todas las computadoras en el diccionario de caminos màs cortos
		Lista<Compu>::const_Iterador it1 = this->computadoras.CrearIt();
		Lista<Compu>::const_Iterador it2 = this->computadoras.CrearIt();

		while(it1.HaySiguiente()) {
			while(it2.HaySiguiente()) {
				ActualizarCaminosMasCortos(it1.Siguiente(), it2.Siguiente());
				it2.Avanzar();
			}
			it2 = this->computadoras.CrearIt();
			it1.Avanzar();
		}
	}
Exemple #3
0
Conj<Lista<Compu> > Red::CaminosMinimos(Compu c1, Compu c2){
  Nat k = 1;
  Nat n = Computadoras().Cardinal();
  Conj<Lista<Compu> > x = CaminosDeLargoN(c1, c2, k);
 
	while(k<n && x.EsVacio()){
    k++;	
		x = CaminosDeLargoN(c1,c2, k);
  }
  return x;
	
}
Exemple #4
0
	bool Red::HayCamino(const Compu& c1,const Compu& c2) {
		assert( Esta( Computadoras(), c1 ) );
		assert( Esta( Computadoras(), c2 ) );

		return ! this->caminosMasCortos.obtener(c1.Ip())->obtener(c2.Ip())->EsVacio();
	}
Exemple #5
0
	bool Red::UsaInterfaz(const Compu& c1,Nat i) {
		assert( Esta( Computadoras(), c1 ) );
		assert( c1.Interfaces().Pertenece(i) );

		return this->usaInterfaz.obtener(c1.Ip())->operator [](i);
	}
Exemple #6
0
	Conj<Compu> Red::Vecinos(const Compu& c1) {
		assert( Esta( Computadoras(), c1 ) );

		return *this->vecinos.obtener(c1.Ip());
	}
Exemple #7
0
	bool Red::Conectadas(const Compu& c1,const Compu& c2) {
		assert( Esta( Computadoras(), c1 ) );
		assert( Esta( Computadoras(), c2 ) );
		
		return this->vecinos.obtener(c1.Ip())->Pertenece(c2);
	}