In fact, a problem can be np-hard or not. For an algorithm, we can only say that whether it gives results in case of np-hard problems. So, there is no meaning to say that Apriori is np-hard. In fact, because some problems can not be solved within polynomial time, the words such as np-hard, np-complete etc. are introduced. The three algorithms you mentioned can be applied on any problem. But if the problem is np-hard, then it will give approximate results. So, these algorithms are called approximate algorithms. The following links will be useful. The first is a link to a good powerpoint presentation which discusses all the algorithms you mentioned. The second is a paper.