graph.tasks

## Class FloydShortestPath

- java.lang.Object
- - graph.tasks.FloydShortestPath

- All Implemented Interfaces:
    ShortestPath

      class FloydShortestPath
      extends java.lang.Object
      implements ShortestPath

  Implementace Floydova algoritmu hledání nejkratší cesty.

  Popis: Nejkratší cesty se hledají Floydovým algoritmem. Výsledkem hledání je posloupnost vrcholů, kterými nejkratší cesta prochází.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `FloydShortestPath.record` prvek matice nejkratších cest

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private Graph` | `graph` graf, ve kterém se má hledat nejkratší cesta
    `private int` | `opCnt` provozní měření
    `private boolean` | `ready` příznak: nejkratší cesty uložené v úložišti jsou aktuálně platné
    `private SequenceFactory` | `seqFac` továrna na výslednou posloupnost vrcholů
    `private FloydShortestPath.record[][]` | `store` úložiště

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FloydShortestPath(Graph aGraph, SequenceFactory aSeqFac)` Vyrobí objekt třídy FloydShortestPath.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `private int` | `getIndex(GraphVertex v)` Zjistí index vrcholu.
    `int` | `getOperationCounter()` Provozní měření.
    `private void` | `searchBetween(int ix, int jx, Sequence res)` Najde mezilehlé vrcholy na cestě z ix do jx.
    `Sequence` | `shortestPath(GraphTasksVertex aStart, GraphTasksVertex aTarget)` Hledání nejkratší cesty.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### store

          private FloydShortestPath.record[][] store

      úložiště

    - #### ready

          private boolean ready

      příznak: nejkratší cesty uložené v úložišti jsou aktuálně platné

    - #### graph

          private Graph graph

      graf, ve kterém se má hledat nejkratší cesta

    - #### seqFac

          private SequenceFactory seqFac

      továrna na výslednou posloupnost vrcholů

    - #### opCnt

          private int opCnt

      provozní měření

  - ### Constructor Detail

    - #### FloydShortestPath

          public FloydShortestPath(Graph aGraph,
                                   SequenceFactory aSeqFac)

      Vyrobí objekt třídy FloydShortestPath.
      Parameters:
        `aGraph` - graf, ve kterém se má hledat nejkratší cesta
        `aSeqFac` - továrna na posloupnosti (zde výsledná posloupnost vrcholů)

  - ### Method Detail

    - #### getIndex

          private int getIndex(GraphVertex v)

      Zjistí index vrcholu.
      Parameters:
        `v` - vrchol
      Returns:
        index vrcholu

    - #### searchBetween

          private void searchBetween(int ix,
                                     int jx,
                                     Sequence res)

      Najde mezilehlé vrcholy na cestě z ix do jx.
      Parameters:
        `ix` - index výchozího vrcholu
        `jx` - index cílového vrcholu
        `res` - posloupnost, která má být naplněna vrcholy na cestě z ix do jx

    - #### shortestPath

          public Sequence shortestPath(GraphTasksVertex aStart,
                                       GraphTasksVertex aTarget)

      Hledání nejkratší cesty.
      Specified by:
        `shortestPath` in interface `ShortestPath`
      Parameters:
        `aStart` - výchozí vrchol
        `aTarget` - cílový vrchol
      Returns:
        posloupnost vrcholů v pořadí, jak jimi prochází nejkratší cesta

    - #### getOperationCounter

          public int getOperationCounter()

      Provozní měření.
      Specified by:
        `getOperationCounter` in interface `ShortestPath`
      Returns:
        počet významných operací při posledním běhu Floydova algoritmu