[this seems to have bounced earlier]

Hi Kyle, Izak,

On Aug 16, 2013, at 19:18 , Kyle Sluder <k...@ksluder.com> wrote:

> As Ken Ferry described in his Auto Layout session at WWDC 2011, the specific 
> solver used by Apple is based on the Cassowary constraint engine.

Yes, the algorithm involved is a variant of the Simplex algorithm, optimized 
for incremental re-solves. 

        http://www.badros.com/greg/papers/cassowary-tochi.pdf


> So asking for the "algorithm" isn't really that helpful, because Auto Layout 
> is not defined or implemented imperatively. There's an algorithm involved, 
> but that algorithm is a general-purpose constraint solver that operates on 
> linear equations. Strictly speaking it has nothing to do with views.

True, the behavior has nothing to do with views in particular, but the 
algorithm in question does have an effect on the results, particularly…

On Aug 16, 2013, at 19:06 , Izak van Langevelde <eezac...@xs4all.nl> wrote:

> I have only been able to sort this out by adding in code a constraint that 
> explicitly constrains the two fields as having the same width. My main 
> concern is that it feels too complicated for something this simple.


…the simplex algorithm searches for optima in the “corners” of the 
multi-dimensional polyhedron (by walking along the edges).

        http://en.wikipedia.org/wiki/Cutting-plane_method

This means that it will prefer solutions where one variable takes up all the 
slack over one where the slack is distributed equally between two variables.  
However, the fact that you are leaving this up to the algorithm does mean that 
your set of constraints is underconstrained and that adding the equality 
constraints is the right solution (probably with a lower priority than other 
constraints).

So called “interior point” methods that do not follow the edges also exist, but 
despite the fact that these have theoretically better running times 
(polynomial, whereas the simplex is exponential), in practice the simplex is 
much faster, usually running in linear time. 

Cheers,

Marcel

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to