From 647d7d8730f9cad3d593bea14e59ddf43ef1d0cc Mon Sep 17 00:00:00 2001 From: lfainsin Date: Wed, 9 Dec 2020 13:44:41 +0000 Subject: [PATCH] raffinages presque finis git-svn-id: http://cregut.svn.enseeiht.fr/2020/1sn/pim/projets/GH-05@207792 e13453a9-b01f-0410-a051-f404c4f0c485 --- livrables/raffinages.txt | 77 ++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 51 deletions(-) diff --git a/livrables/raffinages.txt b/livrables/raffinages.txt index a19fdc1..b1bacf5 100644 --- a/livrables/raffinages.txt +++ b/livrables/raffinages.txt @@ -1,29 +1,4 @@ Ce raffinage décrit l'implémentation de l'algorithme de PageRank dans le cas d'une implémentation de matrice naives. -Une syntaxe proche du python3 est adoptée pour simplifier l'écriture et la lisibilité. - -DISCLAIMER: Cette implémentation n'est pas la plus efficace, mais la plus simple. - -On suppose que l'on utilise un language fortement typé (utile pour la robustesse). -On suppose que les procédures/fonctions suivantes sont élémentaires: - Std: - - Arguments - - Longueur - - Exception - - Écrire - - Lire - - Ouvrir - - Fermer - - Fin // end of file - - Somme - - Matrice: - - Transposer - - Ones - - Zeros - - Les opérations binaires: * / + - - L'accès via les [ ] - - Trier - R0: Calculer le PageRank et le poids de chaque nœud d'un réseau @@ -34,15 +9,14 @@ R1: Comment « Calculer le PageRank et le poids de chaque nœud d'un réseau » Écrire les résultats dans des fichiers in: pi, filename, N R2: Comment « Récupérer les arguments de la ligne de commande » ? - args ← Arguments() - len_args ← Longueur(args) - Si non 0 < len_args <= 6 Alors + args ← Récuperer les arguments de la ligne de commande + len_args ← Récuperer le nombre d'arguments de la ligne de commande + Si non() 0 < len_args <= 6 ) Alors Lever l'exception ERROR_ARGS Sinon Traiter les arguments in: args, len_args ; out: filename, ite_max, alpha, naif FinSi - Lors d'une exception Faire - // ici on attend principalement les exceptions: EEROR_ARGS et CONSTRAINT_ERROR + Lors d'une exception (quelconque) Faire Afficher les consignes d'utilisation Fin du traitement des excpetions @@ -78,10 +52,11 @@ R2: Comment « Initialiser les variables » ? Créer H out: H, N Créer S in: H, N ; out: S pi ← Vecteur de Taille N remplit de 1/N - G ← alpha * S + Matrice de Taille N, N remplit de (1-alpha)/N + E ← Matrice de Taille N, N remplit de (1-alpha)/N + G ← alpha * S + E R3: Comment « Créer H » ? - fichier ← Ouvrir(filename + ".net") + Ouvrir le fichier: filename + ".net" N ← Lire(fichier) H ← Matrice de Taille de N,N de 0 @@ -90,45 +65,45 @@ R3: Comment « Créer H » ? j ← Lire(fichier) L'element i,j de la matrice H ← 1 FinTantQue - Fermer(fichier) + Fermer le fichier: filename + ".net" Pour i de 0 à N-1 Faire - somme_ligne ← La Somme la ligne i de la matrice H - Si somme_ligne /= 0 - La ligne i de la matrice H ← La ligne i de la matrice H divisé par somme_ligne - FinSi + somme_ligne ← La Somme la ligne i de la matrice H + Si somme_ligne /= 0 + La ligne i de la matrice H ← La ligne i de la matrice H, divisé par somme_ligne + FinSi FinPour R3: Comment « Créer S » ? - V ← H * Vecteur de Taille N remplit de 1 S ← H - Pour i de 0 a N-1 Faire - Si L'element i du vecteur V = 0 Alors - La ligne i de la matrice S ← 1/N - Fin Si + Pour i de 0 à N-1 Faire + somme_ligne ← La Somme la ligne i de la matrice S + Si somme_ligne = 0 + La ligne i de la matrice S ← 1/somme_ligne + FinSi FinPour R2: Comment « Éxecuter l'algorithme itératif » ? G ← Transposer(G) Pour i de 1 à ite_max Faire - pi ← G_transpo * pi + pi ← G_transpo multiplié matriciellement par pi FinPour R2: Comment « Écrire les résultats dans des fichiers » ? Coupler les poids et leur indice in: pi ; out: pi_couple - pi_couple ← Trier(pi_couple, 0) // on trie selon la première colonne + Trier pi_couple selon sa première colonne - fichier ← Ouvrir(filename + ".p") - Écrire(fichier, Première Colonne de pi_couple) - Fermer(fichier) + Ouvrir le fichier: filename + ".p" + Écrire dans le fichier la première colonne de pi_couple + Fermer le fichier: filename + ".p" - fichier ← Ouvrir(filename + ".ord") - Écrire(fichier, Seconde Colonne pi_couple) - Fermer(fichier) + Ouvrir le fichier: filename + ".net" + Écrire dans le fichier la seconde colonne de pi_couple + Fermer le fichier: filename + ".ord" R3: Comment « Coupler les poids et leur indice » ? pi_couple ← Matrice de Taille N,2 remplit de 0 Première Colone de pi_couple ← pi Pour i de 0 à N-1 Faire - L'element i,1 de pi-couple ← i + L'élément i,1 de pi-couple ← i FinPour \ No newline at end of file