From 621bad52a05a294592d9ae20647fb7ec2cdf4cd6 Mon Sep 17 00:00:00 2001 From: Lazar Cristian-Stefan <lazar.cristian.stefan243@gmail.com> Date: Sun, 12 May 2024 22:47:59 +0300 Subject: [PATCH] Added story for task 3 --- README.md | 12 +++++------- src/task-3/task_3.asm | 3 ++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 356c090..e2a51f6 100644 --- a/README.md +++ b/README.md @@ -92,11 +92,9 @@ binary_search(int32_t *buff, uint32_t needle, uint32_t start, uint32_t end); ## Task 3 - Depth first search -Ăn acest task veČi implementa un algoritm cunoscut de la SDA de cautare pe grafuri, depth first search. +Pentru ca Zoly sÄ verifice cÄ drumul pe care e transmis un pachet este legitim, se va realiza o cautare in topologia reČelei. Protocolul de comunicaČie garanteazÄ trimiterea pachetelor folosind algoritmul de cÄutare ĂŽn adâncime. Astfel, Čtiind sursa pachetului, putem gÄsi calea legitimÄ cÄtre toate celelalte gazde din reČea. -*Note:* implementarea trebuie sÄ fie recursivÄ, NU iterativÄ. - -Pentru acest task aveČi de implementat funcČia `dfs()` ĂŽn fiČierul `dfs.asm`. +Ăn acest task veČi implementa algoritmul cunoscut de la SDA de cautare pe grafuri, depth first search. ### Algoritmul dfs @@ -117,7 +115,7 @@ DacÄ nodul sursÄ este 1, atunci o posibilÄ cautare dfs ar fi urmatoarea: * Nodul 3 nu mai are vecini, ne ĂŽntoarcem la nodul 1. * Nodul 1 nu mai are vecini, se ĂŽncheie cÄutarea. -Dfs-ul poate avea mai multe cÄutari valide, ĂŽn funcČie de ordinea ĂŽn care alegem sÄ vizitÄm vecinii. Ăn cazul nostru, Celelalte posibilitÄČi de cÄutare ar fi {1, 3, 2, 4} Či {1, 3, 4, 2}. +Dfs-ul poate avea mai multe cÄutari valide, ĂŽn funcČie de ordinea ĂŽn care alegem sÄ vizitÄm vecinii. Ăn cazul nostru, celelalte posibilitÄČi de cÄutare ar fi {1, 3, 2, 4} Či {1, 3, 4, 2}. ### API @@ -133,7 +131,7 @@ Aceasta returneazÄ **adresa** unei structuri care conČine vecinii nodului ĂŽn ```x86asm struc neighbours_t .num_neighs resd 1 ; NumÄrul de vecini. - .neighs resd 1 ; Vectorul cu `num_neighs` vecini. + .neighs resd 1 ; Adresa vectorul cu `num_neighs` vecini. endstruc ``` @@ -148,7 +146,7 @@ void dfs(uint32_t node, neighbours_t *(*expand)(uint32_t node)); Aceasta primeČte ca parametru nodul sursÄ Či adresa funcČiei `expand` Či se cere sÄ implementaČi algoritmul de dfs Či sÄ printaČi nodurile ĂŽn momentul ĂŽn care le viziaČi. Printarea se va realiza prin apelara funcČiei `printf`. Se depuncteazÄ folosirea macro-ului `PRINTF32`. - +Implementarea trebuie sÄ fie recursivÄ, **NU** iterativÄ. ## Bonus diff --git a/src/task-3/task_3.asm b/src/task-3/task_3.asm index f0f6e2e..056dba8 100644 --- a/src/task-3/task_3.asm +++ b/src/task-3/task_3.asm @@ -1,9 +1,10 @@ +%include "../include/io.mac" ; The `expand` function returns an address to the following type of data ; structure. struc neighbours_t .num_neighs resd 1 ; The number of neighbours returned. - .neighs resd 1 ; Vector containing the `num_neighs` neighbours. + .neighs resd 1 ; Address of the vector containing the `num_neighs` neighbours. ; A neighbour is represented by an unsigned int (dword). endstruc -- GitLab