Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-07-2009, 20:29   #1
TheDragon81
Senior Member
 
L'Avatar di TheDragon81
 
Iscritto dal: Jul 2004
Città: Padova (PD)
Messaggi: 2197
[JAVA] Calcolo complessità metodo ricorsivo

Salve,
qualcuno mi può aiutare a trovare la complessità computazionale (asintotica) di questo metodo ricorsivo? Grazie in anticipo.

Codice:
private static void antichainCreator(Node lastNode, ArrayList<Node> antiChain){
	_hashChoicelist =  new Hashtable<Node, ArrayList<String>>();
	_hashChoicelist.put(lastNode,lastNode.getElementList());
	if(!_hashChoicelist.get(lastNode).isEmpty()){
		ArrayList<String> next = _hashChoicelist.get(lastNode);
		for (int i = 0; i < next.size(); i++){
			Node focus = _hashNodeList.get(next.get(i));
			if (!antiChain.contains(focus) 
					&& focus.isGood(antiChain)){
				ArrayList<Node> antiChainTemp = (ArrayList<Node>)antiChain.clone();
				antiChainTemp.add(focus);
				antichainCreator(focus, antiChainTemp);
			} else {
				if(!_antiChainList.contains(antiChain)){
					_antiChainList.add(antiChain);
					_antichainMax(antiChain);
				}
			}
		}
	}
}
dove il metodo "isGood" è questo:
Codice:
public boolean isGood(ArrayList<Node> antiChain){
	boolean check = true;
	for(int i=0; i < antiChain.size();i++){
		if(antiChain.get(i).isInBlackList(_name)){
			check = false;
			break;
		}
	}
	return check;
}

public boolean isInBlackList(String elem){
	return(_blacklist.contains(elem));
}
__________________
Vendo/Scambio:
TheDragon81 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2009, 11:44   #2
TheDragon81
Senior Member
 
L'Avatar di TheDragon81
 
Iscritto dal: Jul 2004
Città: Padova (PD)
Messaggi: 2197
Uppolo
__________________
Vendo/Scambio:
TheDragon81 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2009, 12:16   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Sarebbe meglio che prima postassi il tuo tentativo di risoluzione del problema, magari indicando i dubbi specifici che hai: così chi ti legge può aiutarti, altrimenti l'alternativa sarebbe rispondere direttamente ma il regolamento di questa sezione del forum vieta di postare soluzioni complete ad esercizi.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2009, 13:32   #4
TheDragon81
Senior Member
 
L'Avatar di TheDragon81
 
Iscritto dal: Jul 2004
Città: Padova (PD)
Messaggi: 2197
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Sarebbe meglio che prima postassi il tuo tentativo di risoluzione del problema, magari indicando i dubbi specifici che hai: così chi ti legge può aiutarti, altrimenti l'alternativa sarebbe rispondere direttamente ma il regolamento di questa sezione del forum vieta di postare soluzioni complete ad esercizi.
Beh, non è una soluzione ad un esercizio ... questo algoritmo l'abbiam creato io ed un mio amico per calcolare le anticatene di un grafo ...
Cmq avevamo pensato a O(n^2) ... cmq non ci convince quell' isGood (che nel caso pessimo si cicla tutta la lista ...)
__________________
Vendo/Scambio:
TheDragon81 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2009, 13:57   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Non me ne intendo di complessità computazionale, però avete tenuto conto anche delle chiamate al metodo contains? In teoria hanno costo lineare anche quelle, almeno a leggere la javadoc:
Quote:
Originariamente inviato da javadoc per ArrayList<E> class
...
The size, isEmpty, get, set, iterator, and listIterator operations run in constant time. The add operation runs in amortized constant time, that is, adding n elements requires O(n) time. All of the other operations run in linear time (roughly speaking). The constant factor is low compared to that for the LinkedList implementation.
...
Quindi, se non sbaglio, il metodo isInBlackList ha complessità lineare, e di conseguenza il metodo isGood che lo richiama nel suo ciclo for ha complessità O(n^2).

Ma aspetta qualcuno di più esperto, ripeto, sono ignorante in materia
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 27-07-2009, 14:11   #6
TheDragon81
Senior Member
 
L'Avatar di TheDragon81
 
Iscritto dal: Jul 2004
Città: Padova (PD)
Messaggi: 2197
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Non me ne intendo di complessità computazionale, però avete tenuto conto anche delle chiamate al metodo contains? In teoria hanno costo lineare anche quelle, almeno a leggere la javadoc:


Quindi, se non sbaglio, il metodo isInBlackList ha complessità lineare, e di conseguenza il metodo isGood che lo richiama nel suo ciclo for ha complessità O(n^2).

Ma aspetta qualcuno di più esperto, ripeto, sono ignorante in materia
Quindi, tornando al metodo principale (e quindi al ciclo che contiene il tutto) diventerebbe un O(n^3)?
__________________
Vendo/Scambio:
TheDragon81 è offline   Rispondi citando il messaggio o parte di esso
Old 28-07-2009, 00:08   #7
_Claudio
Senior Member
 
L'Avatar di _Claudio
 
Iscritto dal: Aug 2005
Messaggi: 579
Da quanto ho capito ipotizzando che le chiamate a funzioni di libreria abbiano tutte costo costante ho che dentro antiChainCreator chiamo isGood che nel caso pessimo costa n e antiChainCreator che nel caso pessimo costa n^n perchè chiama se stessa n volte e per tutte le n volte cicla sugli n elementi, essendo funzioni in serie queste complessità si sommano pertanto la complessità nel caso pessimo asintotica è O(n^n).

Ovviamente non è l'apocalisse questa perchè alcuni algoritmi hanno complessità O(n^n) ma il caso pessimo ha una probabilità bassissima di accadimento e nei casi medio e ottimo hanno una complessità migliore di altri.

Sta a te valutare in base a come è stato ideato se sei in tali condizioni ottimali.

Poi si sa che la ricorsione quando vi sono cicli di mezzo costa molto in termini di computazione e risorse sotto caso pessimo, anche perchè a mio avviso è diabolico usare un ciclo dentro una funzione ricorsiva come in questo caso, e se lo si fa bisogna essere ben consapevoli di quello che si sta facendo.
_Claudio è offline   Rispondi citando il messaggio o parte di esso
Old 29-07-2009, 17:18   #8
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da _Claudio Guarda i messaggi
Da quanto ho capito ipotizzando che le chiamate a funzioni di libreria abbiano tutte costo costante ho che dentro antiChainCreator chiamo isGood che nel caso pessimo costa n e antiChainCreator che nel caso pessimo costa n^n perchè chiama se stessa n volte e per tutte le n volte cicla sugli n elementi, essendo funzioni in serie queste complessità si sommano pertanto la complessità nel caso pessimo asintotica è O(n^n).

Ovviamente non è l'apocalisse questa perchè alcuni algoritmi hanno complessità O(n^n) ma il caso pessimo ha una probabilità bassissima di accadimento e nei casi medio e ottimo hanno una complessità migliore di altri.

Sta a te valutare in base a come è stato ideato se sei in tali condizioni ottimali.

Poi si sa che la ricorsione quando vi sono cicli di mezzo costa molto in termini di computazione e risorse sotto caso pessimo, anche perchè a mio avviso è diabolico usare un ciclo dentro una funzione ricorsiva come in questo caso, e se lo si fa bisogna essere ben consapevoli di quello che si sta facendo.
Sì anche secondo me è nⁿ (notare l'uso del carattere speciale )

E rabbrividisco
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Speciale smartphone Android: 7 modelli i...
La Camera USA presenta il conto: i data ...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v