public static boolean discoverMissingValues(ArrayList<LearningObject> learningSet, ArrayList<Attribute> attributes, ArrayList<ClassCategory> classes){
		
		//apply algorithm if and only in only one attribute has missing values in learning set
		
		//let the class become ordinary attribute
		//new classes from attribute that has an unknown
		
		//the position of the unknown attribute
		int pos = -2;
		
		//do algorithm to build tree;
		Nod nod = new Nod();
		
		//Find missing attribute 
		for(int i=0;i<learningSet.size();i++){
			for(int j=0; j<learningSet.get(i).values.size(); j++){
				if(learningSet.get(i).values.get(j).isUndefined()){
					pos = j;
					break;
				}
			}
		}
		
		if(pos >= 0){
				
			ArrayList<LearningObject> undefinedSet = new ArrayList<LearningObject>();
			ArrayList<LearningObject> definedSet = new ArrayList<LearningObject>();
			for(int j=0;j<learningSet.size();j++){
				if(learningSet.get(j).values.get(pos).isUndefined()){
					//for the sets that have there value undefineD classify it
					undefinedSet.add(learningSet.get(j));
				}
				else
					definedSet.add(learningSet.get(j));
			}
			
			System.out.println("Pos : " + pos);
			//create new sets
			ArrayList<Attribute> newAttributes = createNewAttributeSet(pos, attributes, classes);
			
			ArrayList<ClassCategory> newClasses = createNewClasses(attributes.get(pos), definedSet);
			
			ArrayList<LearningObject> newLearningSet = createNewLearningSet(pos, definedSet);
			
			ArrayList<LearningObject> findValuesSet = createNewLearningSet(pos, undefinedSet);
			
			//discretizare atribute
			discretizeNumericAttributesProcessClass(newLearningSet, newAttributes);
			
			
			//do algorithm
			algorithm(newLearningSet, newAttributes, newClasses, nod);
			
			//String display = "";
			//printClassificationRules(nod, 0, display);
			
			//System.out.println("Rules should have been showned");
			//find out values by classifying learnObject that has undefined value
			
			ArrayList<String> missingValues = classifySet(nod, findValuesSet);
						
			for(int j=0;j<missingValues.size(); j++){
				System.out.println(" Discovered missing value :" + missingValues.get(j) + ": ");
				undefinedSet.get(j).values.get(pos).setValue(missingValues.get(j));
			}
			
			return true;
		}
			return false;
	}