Ciao!!E' da un po' di giorni che ho un problema con l'algoritmo Union - Find, non saprei proprio cosa fare. Ce n'è voluto molto per capire esattamente come funziona (con i due ordinamenti Quick - Union e Quick - Find..), ma ora ad implementarlo è tutta un'altra storia..
![]()
Le slide dicono questo :
Tipo di dato : Union Find
Collezione di insiemi disgiunti identificati mediante una etichetta
Operazioni : Makeset( Elemento a )
Crea un insieme formato da un solo elemento, 'a', ed associa all’insieme
l’etichetta 'a'
Union( Insieme A, Insieme B )
Unisce gli elementi degli insiemi A e B in un unico insieme che etichetta
con 'A'. I vecchi insiemi A ed B saranno cancellati
Find( Elemento a )
Restituisce l’etichetta dell’insieme contenente l’elemento a.
Io sono riuscito purtroppo a fare solo questo in codice, per ora :
Ciò che ho bisogno di fare l'ho disegnato nel file in allegato (spero si capisca, anche perché è banale).codice:#include <iostream> #include <stdlib.h> using namespace std; class Union { private : struct Nodo { char name; char elem; }; Nodo* A; //Nodo* B; // Ho bisogno di dichiarare anche un altro nodo, 'B', che è il fratello di 'A'?? public : Union() { A = NULL; } ~Union() { delete A; } void makeSet(Nodo*, char, char); char unione(Nodo*, Nodo*); char find(Nodo*); void print(Nodo*); }; void Union::makeSet(Nodo* A, char n, char e) { cout << "Inserisci il nome del nuovo insieme : "; cin >> n; cout << "Inserisci l'elemento (carattere) : "; cin >> e; A = new Nodo(); A->name = n; A->elem = e; } char Union::unione(Nodo* A) { // Non lo so! void Union::find(Nodo* etichetta) { // Nemmeno :confused:
Sarei molto grato a chiunque mi darà anche un piccolo suggerimento su come andare avanti nelle funzioni 'unione()' e 'find()', e mi piacerebbe sapere da qualcuno esperto come voi se la classe è corretta, o meglio, ho bisogno di un solo puntatore alla struttura, o due? O sarebbe meglio non utilizzare proprio la struttura, ma semplicemente un campo per il nome del nodo ed uno per l'elemento??

E' da un po' di giorni che ho un problema con l'algoritmo Union - Find, non saprei proprio cosa fare. Ce n'è voluto molto per capire esattamente come funziona (con i due ordinamenti Quick - Union e Quick - Find..), ma ora ad implementarlo è tutta un'altra storia..
Rispondi quotando