Change Password

Please enter the password.
Please enter the password. Between 8-64 characters. Not identical to your email address. Contain at least 3 of: uppercase, lowercase, numbers, and special characters.
Please enter the password.
Submit

Change Nickname

Current Nickname:
Submit

Apply New License

License Detail

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

The MAC address of the server you want to deploy.

Please complete this required field.

Please complete this required field.

Cancel
Apply
ID
Product
Status
Cores
Applied Validity Period(days)
Effective Date
Excpired Date
Mac Address
Apply Comment
Review Comment
Close
Profile
  • Full Name:
  • Phone:
  • Company:
  • Company Email:
  • Country:
  • Language:
Change Password
Apply

You have no license application record.

Apply
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

Product Created On ID Amount (USD) Invoice
Product Created On ID Amount (USD) Invoice

No Invoice

v4.5
Search
    Français
    v4.5

      Plus Court Chemin à Source Unique de Dijkstra

      ✓ File Writeback ✕ Property Writeback ✓ Direct Return ✓ Stream Return ✕ Stats

      Vue d’ensemble

      Le problème du plus court chemin à source unique (SSSP) consiste à calculer, pour chaque node accessible depuis le node source, le chemin le plus court avec le poids total minimal des edges parmi tous les chemins possibles ; ou dans le cas des graph non pondérés, le chemin le plus court avec le nombre minimal d'edges. Le coût (ou la distance) du chemin le plus court est le poids total des edges ou le nombre d'edges.

      L'algorithme original de Dijkstra a été conçu par le scientifique en informatique néerlandais Edsger W. Dijkstra en 1956 pour trouver le plus court chemin entre deux nodes donnés. Le plus court chemin à source unique est une variante courante, facilitant la planification efficace des chemins et l'analyse des réseaux.

      Concepts

      Plus Court Chemin à Source Unique de Dijkstra

      Voici l'implémentation de base de l'algorithme de Plus Court Chemin à Source Unique de Dijkstra, accompagnée d'un exemple pour calculer les chemins les plus courts pondérés dans un graph non orienté à partir du node source b :

      1. Créer une file de priorité pour stocker les nodes et leurs distances correspondantes par rapport au node source. Initialiser la distance du node source à 0 et les distances de tous les autres nodes à l'infini. Tous les nodes sont marqués comme non visités.

      2. Extraire le node avec la distance minimale de la file et le marquer comme visité, relaxer tous ses voisins non visités.

      Visiter le node b:
      dist(a) = min(0+2,∞) = 2, dist(c) = min(0+1,∞) = 1

      Le terme relaxation fait référence au processus de mise à jour de la distance d'un node v connecté au node u vers une distance potentiellement plus courte en considérant le chemin via le node u. Plus précisément, la distance du node v est mise à jour à dist(v) = dist(u) + w(u,v), où w(u,v) est le poids de l'edge (u,v). Cette mise à jour est effectuée uniquement si la distance actuelle dist(v) est supérieure à dist(u) + w(u,v).

      Une fois qu'un node a été marqué comme visité, son chemin le plus court a été fixé et sa distance ne changera plus pendant le reste de l'algorithme. L'algorithme ne met à jour que les distances des nodes qui n'ont pas encore été visités.

      3. Répéter l'étape 2 jusqu'à ce que tous les nodes soient visités.

      Visiter le node c:
      dist(d) = min(1+3, ∞) = 4, dist(e) = min(1+4, ∞) = 5, dist(g) = min(1+2, ∞) = 3

      Visiter le node a:
      dist(d) = min(2+4, 4) = 4

      Visiter le node g:
      dist(f) = min(3+5, ∞) = 8

      Visiter le node d:
      Aucun voisin ne peut être relaxé

      Visiter le node e:
      dist(f) = min(5+8, 8) = 8

      Visiter le node f:
      Aucun voisin ne peut être relaxé
      L'algorithme se termine ici car tous les nodes sont visités

      Considérations

      • L'algorithme de Dijkstra n'est applicable qu'aux graph avec des poids d'edge non négatifs. Si des poids négatifs sont présents, l'algorithme de Dijkstra pourrait produire des résultats erronés. Dans ce cas, un algorithme différent comme le SPFA devrait être utilisé.
      • Si plusieurs plus courts chemins existent entre deux nodes, tous seront trouvés.
      • Dans les graph déconnectés, l'algorithme ne renvoie que les plus courts chemins du node source à tous les nodes appartenant à la même composante connectée que le node source.

      Syntaxe

      • Commande : algo(sssp)
      • Paramètres :
      Nom
      Type
      Spéc
      Par défaut
      Optionnel
      Description
      ids / uuids _id / _uuid / / Non ID/UUID du node source unique
      direction string in, out / Oui Direction du plus court chemin, ignorer la direction de l'edge si non définie
      edge_schema_property []@schema?.property Type numérique, doit LTE / Oui Une ou plusieurs propriétés d'edge à utiliser comme poids d'edge, où les valeurs de plusieurs propriétés sont additionnées; traiter le graph comme non pondéré si non défini
      record_path int 0, 1 0 Oui 1 pour retourner les plus courts chemins, 0 pour retourner les distances les plus courtes
      sssp_type string dijkstra dijkstra Oui Pour exécuter l'algorithme SSSP de Dijkstra, gardez-le comme dijkstra
      limit int ≥-1 -1 Oui Nombre de résultats à retourner, -1 pour retourner tous les résultats
      order string asc, desc / Oui Trier les nodes par la distance la plus courte depuis le node source

      Exemples

      Le graph exemple est le suivant :

      File Writeback

      Spéc record_path Contenu Description
      filename 0 _id,totalCost La distance/coût le plus court du node source à chaque autre node
      1 _id--_uuid--_id Le plus court chemin du node source à chaque autre node, le chemin est représenté par l'ID alternant des nodes et l'UUID des edges qui forment le chemin
      algo(sssp).params({
        uuids: 1,
        edge_schema_property: '@default.value'
      }).write({
        file: {
          filename: 'costs'
        }
      })
      

      Résultats : Fichier costs

      G,8
      F,4
      E,5
      D,5
      C,5
      B,2
      A,0
      
      algo(sssp).params({
        uuids: 1,
        edge_schema_property: '@default.value',
        sssp_type: 'dijkstra',
        record_path: 1
      }).write({
        file: {
          filename: 'paths'
        }
      })
      

      Résultats : Fichier paths

      A--[102]--F--[107]--E--[109]--G
      A--[102]--F--[107]--E
      A--[101]--B--[105]--D
      A--[101]--B--[104]--C
      A--[102]--F
      A--[101]--B
      A
      

      Direct Return

      Alias Ordinal record_path Type Description Colonnes
      0 0 []perNode Le coût/la distance le plus court du node source à chaque autre node _uuid, totalCost
      1 []perPath Le plus court chemin du node source à chaque autre node, le chemin est représenté par l'UUID alternant des nodes et l'UUID des edges qui forment le chemin /
      algo(sssp).params({
        uuids: 1,
        edge_schema_property: '@default.value',
        sssp_type: 'dijkstra',
        record_path: 0,
        order: 'desc'
      }) as costs
      return costs
      

      Résultats : costs

      _uuid totalCost
      7 8
      5 5
      4 5
      3 5
      6 4
      2 2
      1 0
      algo(sssp).params({
        ids: 'A',
        edge_schema_property: '@default.value',
        direction: 'out',
        record_path: 1, 
        order: 'asc'
      }) as paths
      return paths
      

      Résultats : paths

      1
      1--[101]--2
      1--[102]--6
      1--[102]--6--[107]--5
      1--[101]--2--[105]--4
      1--[101]--2--[104]--3
      1--[102]--6--[107]--5--[109]--7

      Stream Return

      Alias Ordinal record_path Type Description Colonnes
      0 0 []perNode Le coût/la distance le plus court du node source à chaque autre node _uuid, totalCost
      1 []perPath Le plus court chemin du node source à chaque autre node, le chemin est représenté par l'UUID alternant des nodes et l'UUID des edges qui forment le chemin /
      algo(sssp).params({
        uuids: 1,
        edge_schema_property: '@default.value',
        sssp_type: 'dijkstra'
      }).stream() as costs
      where costs.totalCost <> [0,5]
      return costs
      

      Résultats : costs

      _uuid totalCost
      6 4
      2 2
      algo(sssp).params({
        ids: 'A',
        edge_schema_property: '@default.value',
        record_path: 1
      }).stream() as p
      where length(p) <> [0,3]
      return p
      

      Résultats : p

      1--[102]--6--[107]--5
      1--[101]--2--[105]--4
      1--[101]--2--[104]--3
      1--[102]--6
      1--[101]--2
      Please complete the following information to download this book
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写