[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(55b788988f62c723f76acec280484784.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/55b788988f62c723f76acec280484784.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/55b788988f62c723f76acec280484784.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/55b788988f62c723f76acec280484784.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(55b788988f62c723f76acec280484784.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/55b788988f62c723f76acec280484784.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/55b788988f62c723f76acec280484784.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/55b788988f62c723f76acec280484784.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(b35044d3aa048ce1dbcce757d89993f3.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/b35044d3aa048ce1dbcce757d89993f3.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/b35044d3aa048ce1dbcce757d89993f3.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/b35044d3aa048ce1dbcce757d89993f3.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(b35044d3aa048ce1dbcce757d89993f3.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/b35044d3aa048ce1dbcce757d89993f3.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/b35044d3aa048ce1dbcce757d89993f3.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/b35044d3aa048ce1dbcce757d89993f3.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(29ac0bb696a6faa6f086107454f3646a.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/29ac0bb696a6faa6f086107454f3646a.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/29ac0bb696a6faa6f086107454f3646a.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/29ac0bb696a6faa6f086107454f3646a.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(29ac0bb696a6faa6f086107454f3646a.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/29ac0bb696a6faa6f086107454f3646a.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/29ac0bb696a6faa6f086107454f3646a.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/29ac0bb696a6faa6f086107454f3646a.png): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 278: copy(29ac0bb696a6faa6f086107454f3646a.png): failed to open stream: No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 298: unlink(/29ac0bb696a6faa6f086107454f3646a.dvi): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 299: unlink(/29ac0bb696a6faa6f086107454f3646a.ps): No such file or directory
[phpBB Debug] PHP Warning: in file /var/www/ey/web/forum/latexrender/class.latexrender.php on line 300: unlink(/29ac0bb696a6faa6f086107454f3646a.png): No such file or directory
[phpBB Debug] PHP Warning: in file /generate_feed.php on line 295: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3768)
Latest posts from topic “[Algoritmi] Trovare l'elemento non comune a due liste” Latest posts from topic “[Algoritmi] Trovare l'elemento non comune a due liste” on “ElectroYou”. 2017-08-31T09:47:58Z https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557 Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p727138 Patras 2017-09-01T21:00:55Z 2017-09-01T21:00:55Z
Grazie mille! Si sapevo che l'inserimento avvenisse in tempo costante però al passaggio finale che come lo considerato io avrei avuto anche celle vuote. Per quello mi toccava verificare più di n valori in generale.
[quote="GuidoB"]
hash = valElemento % dimensioneTabellaHash (dove valElemento è il valore dell'intero da inserire, e % è il simbolo del modulo, ovvero il resto della divisione intera).

Così invece l'array può essere un po' più riempito ma sempre dagli n elementi e seguendo i passaggi indicati è perfetto. :ok:
Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p727135 GuidoB 2017-09-01T20:17:20Z 2017-09-01T20:17:20Z
[quote="Patras"]Posso ottimizzare la funzione hash traslando il range dopo aver trovato il minimo.

Non è necessario trovare il minimo (e il massimo). Si può fare in modo più efficiente.

[quote="Patras"]Nel caso peggiore avrò comunque [unparseable or potentially dangerous latex formula] dove N è il massimo e M è il minimo.
Nooo... La complessità di inserimento o ricerca di un elemento in una tabella hash non dipende dalle sue dimensioni ma dal grado di riempimento. Se non è troppo piena, è [unparseable or potentially dangerous latex formula], cioè costante e indipendente dal numero di elementi già presenti.
Se devi inserire o ricercare n elementi, la complessità sarà O(n).

Se ne parla un po' qui e in questo PDF.

Suggerimento di un possibile algoritmo:

1) trova quanti elementi contiene la lista B (complessità: O(n)). Chiamiamo questo numero nElementiB.
2) dimensioneTabellaHash = nElementiB * 1.5 // Il riempimento in questo esempio sarà 1/1.5 = 67%.
3) allochi memoria per la tabella hash, con le dimensioni appena calcolate, e la inizializzi con elementi "vuoti".
4) Inserisci nella tabella, uno per uno, gli elementi della lista B (complessità: O(n)). In caso di collisione, la risolvi in uno dei soliti modi: salti avanti o indietro di un certo numero di posizioni (magari variabile), oppure modifichi la funzione di hash a ogni collisione, oppure memorizzi gli elementi in liste concatenate...
5) Cerchi nella tabella, uno per uno, gli elementi della lista A (complessità: O(n)), e vedi se ce n'è qualcuno non presente.

La complessità totale è O(n).

La funzione di hash può essere semplicemente (per quest'uso la ritengo sufficientemente "buona"):

hash = valElemento % dimensioneTabellaHash (dove valElemento è il valore dell'intero da inserire, e % è il simbolo del modulo, ovvero il resto della divisione intera).


Se usi la standard library del C++, puoi dichiarare una unordered_map e hai già pronta tutta la classe che gestisce la tua tabella hash.

Ma mi sembra che a te basti lo pseudocodice...
Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p726985 Patras 2017-09-01T09:33:21Z 2017-09-01T09:33:21Z
Posso ottimizzare la funzione hash traslando il range dopo aver trovato il minimo. Nel caso peggiore avrò comunque [unparseable or potentially dangerous latex formula] dove N è il massimo e M è il minimo. Cosa posso fare di meglio? Non conosco il "passo" tra due valori consecutivi per dividere. Posso trovare il massimo però. E così come dico io non credo che mediamente venga O(n), (N-M) può essere molto più grande di n. Però di sicuro è [unparseable or potentially dangerous latex formula]
Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p726966 GuidoB 2017-08-31T23:39:08Z 2017-08-31T23:39:08Z
[quote="Patras"]
Date due liste A e B (non ordinate), ciascuna delle quali contiene elementi interi distinti,
si vuole determinare se esiste un elemento che compare in A ma non in B. Fornire un
algoritmo efficiente, scriverne lo pseudocodice e discuterne la complessità (ne esiste uno che
richiede tempo O(n) nel caso medio, dove n è il numero di elementi della lista più lunga).


Potresti inserire gli elementi della lista B in una tabella hash (O(n) se si generano poche collisioni) e poi controllare, per ogni elemento della lista A, se è già presente o no nella tabella (ancora O(n) se si generano poche collisioni).

Per generare poche collisioni, la tabella non deve essere troppo piena (non più del 75%, normalmente), e la funzione di hash deve essere "buona". Come farla "buona" è un po' complicato da spiegare qui...
Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p726780 Patras 2017-08-31T10:31:12Z 2017-08-31T10:31:12Z
Grazie per la risposta. Credo che l'ordinamento in se fatto per confronti , che sia prima o dopo aver fuso le liste, comunque non possa dar origine a prestazioni mediamente O(n)
Re: [Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p726772 IlGuru 2017-08-31T10:01:14Z 2017-08-31T10:01:14Z
Verrebbe più semplice ordinando prima le due liste
[Algoritmi] Trovare l'elemento non comune a due liste https://www.electroyou.it/forum/viewtopic.php?f=16&t=70557#p726768 Patras 2017-08-31T09:47:58Z 2017-08-31T09:47:58Z
Ciao a tutti! Ho la consegna di un esercizio ma non la soluzione quindi vi chiedo cortesemente di suggerirmi qualcosa se avete idee.
Consegna:
Date due liste A e B (non ordinate), ciascuna delle quali contiene elementi interi distinti,
si vuole determinare se esiste un elemento che compare in A ma non in B. Fornire un
algoritmo efficiente, scriverne lo pseudocodice e discuterne la complessità (ne esiste uno che
richiede tempo O(n) nel caso medio, dove n è il numero di elementi della lista più lunga).


Due soluzioni che mi vengono in mente (ma che non sembrano O(n) nel caso medio)
- Scandire una lista nel frattempo controllando la presenza dell'elemento nell'altra [unparseable or potentially dangerous latex formula]
- Creare un array dimensione n (quella dell'array più grande) e fare un MergeSort e scandirlo per verificare la presenza di duplicati prendendo ogni volta un elemento dall'altro facendo una ricerca binaria. Ma anche in questo caso abbiamo.. [unparseable or potentially dangerous latex formula] con m dimensione dell'altro array, che se è molto piccola è circa [unparseable or potentially dangerous latex formula]

Con una funzione hash si può fare O(M) dove M è il massimo dei due array. Ma non mi sembra O(n) nel caso medio

Qualcuno ha qualche idea?