private boolean solveFirstHeuristic(){

		System.out.print("- Recherche heuristique : ");

		boolean modified = false;

		SearchResult searchResult;
		
		// Squares
		for(int squareIndex = 0; squareIndex < matrix.getMatrixSize(); squareIndex++){
			//System.out.println("Recherche pour le square " + squareIndex);
			searchResult = searchHeuristic(getSquareTopCoordinate(squareIndex), getSquareEndCoordinate(squareIndex));
			if(searchResult.isModified()){
				//System.out.println("Couple trouvé++++++");
				modified = true;
			}
		}
		
		// rows
		for(int rowIndex=0; rowIndex < matrix.getMatrixSize(); rowIndex++){
			searchResult = searchHeuristic(new Coordinate(rowIndex, 0), new Coordinate(rowIndex, matrix.getMatrixSize() -1));
			if(searchResult.isModified()){
				//System.out.println("Couple trouvé++++++");
				modified = true;
			}			
		}

		// columns
		for(int colIndex=0; colIndex < matrix.getMatrixSize(); colIndex++){
			searchResult = searchHeuristic(new Coordinate(0, matrix.getMatrixSize()), new Coordinate(matrix.getMatrixSize() -1, colIndex));
			if(searchResult.isModified()){
				//System.out.println("Couple trouvé++++++");
				modified = true;
			}	
		}
		if(modified)
			System.out.println("La recherche heuristique a permis de réduire le champs des possibles...");
		else
			System.out.println("La recherche n'a rien donné...");
		return modified;
	}