Exemplo n.º 1
0
        static void doSirky(uzol uzol)
        {
            var navstivene = new HashSet <String>();

            var rad = new Queue <uzol>();

            rad.Enqueue(uzol);

            var zoznam = new List <uzol>();

            var counter    = 1;
            var vsetkyUzly = 1;

            while (rad.Count > 0)   // pokial je nieco vo fronte
            {
                uzol aktualny = null;

                aktualny = rad.Dequeue();

                if (navstivene.Contains(aktualny.ToString()))
                {
                    continue;
                }

                navstivene.Add(aktualny.ToString());
//                Console.WriteLine(String.Join(",", navstivene));    // vypise co obsahuje hashset

                if (aktualny.vzdialenost == 0)   // ak je cervene auto v cielovej pozicii
                {
                    Console.WriteLine("Nasli sme riesenie:\n");
                    Console.WriteLine(aktualny);
                    Console.WriteLine("Pocet spracovanych uzlov: " + counter + " Pocet rozvitych uzlov: " + vsetkyUzly);
                    Console.WriteLine();

                    vypisKonecneRiesenie(aktualny);

                    return;
                }
                counter++;      // pripocitavaj stavy zakazdym, kolko operacii bolo urobenych

                zoznam.Clear();
                zoznam.AddRange(aktualny.dalsie());

                for (int i = 0; i < zoznam.Count; i++)    // pridavam do radu preskumane uzly
                {
                    var sused = zoznam.ElementAt(i);
                    if (!navstivene.Contains(sused.ToString()))
                    {
                        rad.Enqueue(sused);
                        vsetkyUzly++;
                    }
                }
                aktualny.spracovany = true;     // oznaci uzol za spracovany
            }
            Console.WriteLine("Riesenie neexistuje");

//            Console.WriteLine(String.Join("\n", navstivene));
        }
Exemplo n.º 2
0
        static void doHlbky(uzol uzol)
        {
            var navstivene = new HashSet <string>();

            var zasobnik = new Stack <uzol>();

            zasobnik.Push(uzol);

            var zoznam = new List <uzol>();

            var counter    = 1;
            var vsetkyUzly = 1;

            while (zasobnik.Count > 0) // pokial je nieco v zasobniku
            {
                uzol aktualny = null;

                aktualny = zasobnik.Pop();

                if (navstivene.Contains(aktualny.ToString()))
                {
                    continue;
                }

                navstivene.Add(aktualny.ToString());

                if (aktualny.vzdialenost == 0)   // ak je cervene auto v cielovej pozicii
                {
                    Console.WriteLine("Nasli sme riesenie:\n");
                    Console.WriteLine(aktualny);
                    Console.WriteLine("Pocet spracovanych uzlov: " + counter + " Pocet rozvitych uzlov: " + vsetkyUzly);
                    Console.WriteLine();

                    vypisKonecneRiesenie(aktualny);

                    return;
                }
                counter++;      // pripocitavaj stavy zakazdym, kolko operacii bolo urobenych

                zoznam.Clear();
                zoznam.AddRange(aktualny.dalsie());

                for (int i = 0; i < zoznam.Count; i++)    // pridavam do radu preskumane uzly
                {
                    var sused = zoznam.ElementAt(i);
                    if (!navstivene.Contains(sused.ToString()))
                    {
                        zasobnik.Push(sused);
                        vsetkyUzly++;
                    }
                }
                aktualny.spracovany = true;     // oznaci uzol za spracovany
            }
            Console.WriteLine("Riesenie neexistuje");
        }