There isn't a good answer to this in a single dispatch language like java.  The 
overhead is not excessive. 

Sent from my iPad

On Jul 23, 2011, at 5:32 PM, "Lance Norskog (JIRA)" <j...@apache.org> wrote:

> 
>    [ 
> https://issues.apache.org/jira/browse/MAHOUT-672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13070080#comment-13070080
>  ] 
> 
> Lance Norskog commented on MAHOUT-672:
> --------------------------------------
> 
> May I suggest that a redo of Matrices include a solution to the 
> double-dispatch problem?
> 
> [Double Dispatch|http://en.wikipedia.org/wiki/Double_dispatch]
> 
> In this case, there are many variations of the exact code to apply for Matrix 
> :: Vector operations, and way too many uses of *instanceof*.
> 
> Also, the LinearOperator suite is big enough to be its own patch.
> 
> 
> 
> 
>> Implementation of Conjugate Gradient for solving large linear systems
>> ---------------------------------------------------------------------
>> 
>>                Key: MAHOUT-672
>>                URL: https://issues.apache.org/jira/browse/MAHOUT-672
>>            Project: Mahout
>>         Issue Type: New Feature
>>         Components: Math
>>   Affects Versions: 0.5
>>           Reporter: Jonathan Traupman
>>           Priority: Minor
>>            Fix For: 0.6
>> 
>>        Attachments: 0001-MAHOUT-672-LSMR-iterative-linear-solver.patch, 
>> 0001-MAHOUT-672-LSMR-iterative-linear-solver.patch, MAHOUT-672.patch, 
>> MAHOUT-672.patch
>> 
>>  Original Estimate: 48h
>> Remaining Estimate: 48h
>> 
>> This patch contains an implementation of conjugate gradient, an iterative 
>> algorithm for solving large linear systems. In particular, it is well suited 
>> for large sparse systems where a traditional QR or Cholesky decomposition is 
>> infeasible. Conjugate gradient only works for matrices that are square, 
>> symmetric, and positive definite (basically the same types where Cholesky 
>> decomposition is applicable). Systems like these commonly occur in 
>> statistics and machine learning problems (e.g. regression). 
>> Both a standard (in memory) solver and a distributed hadoop-based solver 
>> (basically the standard solver run using a DistributedRowMatrix a la 
>> DistributedLanczosSolver) are included.
>> There is already a version of this algorithm in taste package, but it 
>> doesn't operate on standard mahout matrix/vector objects, nor does it 
>> implement a distributed version. I believe this implementation will be more 
>> generically useful to the community than the specialized one in taste.
>> This implementation solves the following types of systems:
>> Ax = b, where A is square, symmetric, and positive definite
>> A'Ax = b where A is arbitrary but A'A is positive definite. Directly solving 
>> this system is more efficient than computing A'A explicitly then solving.
>> (A + lambda * I)x = b and (A'A + lambda * I)x = b, for systems where A or 
>> A'A is singular and/or not full rank. This occurs commonly if A is large and 
>> sparse. Solving a system of this form is used, for example, in ridge 
>> regression.
>> In addition to the normal conjugate gradient solver, this implementation 
>> also handles preconditioning, and has a sample Jacobi preconditioner 
>> included as an example. More work will be needed to build more advanced 
>> preconditioners if desired.
> 
> --
> This message is automatically generated by JIRA.
> For more information on JIRA, see: http://www.atlassian.com/software/jira
> 
> 

Reply via email to