Effective in terms of performance and efficient in terms of resources. An algorithm might be very effective but computationally inefficient, such as, finding inverse of a matrix using Gauss Elimination method costs O(N^3) operations. It is effective (gives you the result), but inefficient, costs too much in terms of resources. On the other hand finding the inverse based on QR-decomposition is more efficient O(N^2), and effective (finds the right answer).
Effective in terms of performance and efficient in terms of resources. An algorithm might be very effective but computationally inefficient, such as, finding inverse of a matrix using Gauss Elimination method costs O(N^3) operations. It is effective (gives you the result), but inefficient, costs too much in terms of resources. On the other hand finding the inverse based on QR-decomposition is more efficient O(N^2), and effective (finds the right answer).
Agree with above and would add that effectiveness is not always so binary as producing the right result. An algorithm that handles more cases, i.e. more reliably produces a result (as opposed to ending with an error code) is more effective, as is an algorithm that does a better job of preserving numerical precision.
effectiveness or efficacy means ability of an algorithm in finding good solutions under the quality viewpoint. Efficiency is connected to the computational burden it requires to reach an "effective" solution. Usually computational time is measure of efficiency.
The above explanation is correct - effectiveness related to the quality of solution and efficiency related to the computational burden. However there is a tendency to define a solution as effective when it is better in quality of solution with lower computational time.
I agree with Mr. Mobien and want to add few more lines.
The effectiveness of an algorithm is how accurately can algorithm produce a result.
The efficiency of an algorithm is it's complexity. Consider two algorithms A1 and A2 that solves a same problem. And let's say that complexities of A1 is O(log n) and A2 is O(n^3).
Since A1 and A2 solves a problem and produce a result as expected, both algorithms are effective. But A1 is more efficient than A2.
I have personally never heard of the term "effectiveness" of an algorithm. It isn't a precise term, and algorithms are things that can be described precisely since they are mathematical. Some have done a great job of explaining the precise nature of efficiency when we talk about algorithms; so I will not elaborate on that. So instead I will talk more about the "effectiveness" part.
We have a far more precise way of describing algorithms and what you call "effectiveness". I must first described carefully what an algorithm is with respect to a problem. We say a problem is solved by an algorithm if it is correct. That is, for every input instance, the algorithm returns the solution. We call an algorithm correct (or that the algorithm solves the problem) in Computer Science when this is satisfied. What you are elaborating on comes up when dealing with Optimization Problems. Let's elaborate on the definition of an optimization problem (I will give it in a high-level way).
An optimization problem is comprised of problem instances that have a set of feasible solutions; each of which may or may not be an optimal solution (that has objective value that is minimum/maximum) based on the goal of the optimization problem. We say an algorithm solves an optimization problem if the algorithm produces an optimal solution for any given instance. Then the definition above for correctness follows. In heuristics and approximation algorithms, we use a different way of describing the quality of solutions; an approximation factor or sometimes called an approximation ratio.
In Approximation Algorithms (which is where this notion of "effectiveness" would arise) we consider the quality of solution by its objective value (with respect to the optimal objective value). Typically this is a relative factor, not an absolute one in this area, but approximation algorithms can definitely be given in both ways. These results are proven mathematically. Usually algorithms are approached this way when they are attempting to attack NP-hard optimization problems. This is a far more concrete and exact way of describing "effectiveness" and how in Computer Science we usually do this. For example, if I gave a 3-approximation algorithm for a problem, that would mean it guarantees feasible solutions to the optimization problem that have objective value within 3 times the optimal objective value.
Now we took a imprecise definition and got a very precise one that is used in the literature we can work with mathematically in computation. I hope this helps!
I want to discuss your point if view about the term "effectiveness" of an algorithm a little bit. Let's we assume that there are a customer (e.g. I'm a customer) and two researchers. I want to solve an NP Combinatorial Optimization Problem "to minimum" approximetely. I ask researchers to solve this problem. Assume that reseachers developed their Approximation Algorithms A1 and A2 that produce approximate solutions A1(D, t) and A2(D, t), where D is initial data and t is a moment to produce a solution for t, A1(D, t2)
This question is already well answered. I just want to add some comments. For algorithms, efficiency refers to the amount of resources which is necessary for solving a problem. However, in order to say that an algorithm is efficient is necessary to specify which resources are considered, because, generally, we have to compromise some resources to improve others (e.g. time x space). So, only make sense to say that an algorithm is efficient if the consumption of a specific resource is always below a predetermined level. This is very difficult to determine experimentally, therefore the importance of asymptotic analysis of algorithms to find theoretical bounds on efficiency. Efficiency is a characteristic of an algorithm. There exist algorithms that are more efficient than others. Effectiveness is not a characteristic of an algorithm. Effectiveness is a criteria that every algorithm must satisfy (besides others, like definiteness and finiteness). Otherwise, it is not an algorithm.
I am assuming the data you are providing is the input instance? t is the objective value for that given instance? If that is the case the quality you are considering is the same as an absolute approximation factor; which absolute-approximation algorithms will use to measure their qualities with. Now if D is a set of instances that are considered instead, then it may be interesting to consider that as well; but it does make the two algorithms harder to compare with regard to a problem as a whole. I personally refer relative approximation factors.
If D is a set of instances, then I am suspecting you are talking about subclasses of NP-hard optimization problems; which is definitely worth studying; that's actually what I do a lot these days. Usually the goal is to find more efficient algorithms with approximation factors on par or better than the general problem. Usually I would just cast this as designing approximation algorithms for a particular subclass of an NP-hard optimization problem; unless you are considering any possible subclass (which usually leads to interesting results). I just would define it slightly differently personally.
Let me give you an example:
It is known that there are at least 3 different 2-approximation algorithms for the makespan problem on unrelated parallel machines (R||C_{max}). We know of a 1.9...-approximation algorithm for when the processing matrix is restricted to infinities (not permitting scheduling) or the columns contain a positive integer (that are the same -> identical). So when you compare their factors, and if you encounter that subclass of the problem, you can use the 1.9...-approximation algorithm rather than the 2-approximation algorithm; and can be checked in Theta(mn) steps to determine this. You could cast both of these as you have, above except with relative approximation errors rather than absolute approximation errors to get the same idea.
Either way, very interesting. Still fits nicely in with the study of these types of algorithms :). I hope I understood what you were discussing appropriately.
now I will try to explain my previous post a little bit more. So, I am a customer and I'm interested to solve my problem: TO FIND AN APPROXIMATE SOLUTION A(D, t) for a given data D. I WILL TAKE ANY SOLUTION A(D, t) IN CASE OF p = 100% * ( A(D, t) - OPT(D) ) / A(D, t)
If an algorithm is guaranteed to find an optimal solution, its efficiency can and should be measured by the cost of running the algorithm (usually cpu time, occasionally memory usage). However, if not, its efficiency does not have such a simple definition. Its efficiency is the ratio of its solution quality to its cost. Keep in mind that there is no universally agreed-upon or appropriate measure of solution quality.
There are other cases for which it is easy to define a measure of efficiency. The efficiency of an electric-powered light bulb is measured in lumens/watt. Algorithms are more complicated. Many but not all algorithms can be run for different amounts of time, and will on average produce better quality solutions if given more time. You can draw a graph of cpu time versus solution quality to get a more detailed assessment of an algorithm's efficiency. In the 1980s, for example, David Johnson compared simulated annealing with other heuristics in this way. He found that for small cpu times SA was less efficient than several other algorithms, but that the other ones flattened out earlier as cpu time increased, so that for very large cpu times SA was often the best.
lets take an example... suppose you are solving a problem... you have found a very simple method as a solution for that problem - It is EFFECTIVE... but does your method can be used for solving similar type of problems?!! means is your method can solve that type of problems dynamically?!! If answer is yes, then the method is EFFICIENT, otherwise not.
@Robert: The reason why people are "complicating" the question is because they want to elaborate more on the problem because effectiveness is not a precise idea in the literature.
Let me give you an example. I have seen in the literature that term used to described four things (to limit to some):
1) It works well (vague).
2) It solves most instances (vague).
3) The one others have described here for correctness (yet we have more precise definitions people agree on, i.e., correctness).
4) The quality of an answer (brought up here too, still vague as we have more precise ways to describe this e.g.., approximation factors).
That's why people are "complicating" the answer. Algorithms are not "hand-wavy" things, they are mathematical descriptions; and should be described precisely due to this. Why use a vague term when there are better ones people use? I've seen all (1)-(4) before, which is why I have never seen one definition for it as it is more a subjective term that is qualitative than quantitative that is ambiguous (unless the author takes the time to define what it means or makes sense after making a lot of contextual statements).
Efficiency refers to how well you do something, whereas effectiveness refers to how useful it is. An algorithm might be very effective but computationally inefficient. Effectiveness of an algorithm is the same as correctness of an algorithm. While the efficiency of an algorithm is about doing things in an optimal way interns of resources (space and time)