[R] Add transitivity to a matrix?
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Tue Jun 18 16:03:02 CEST 2019
>>>>> Eric Berger
>>>>> on Tue, 18 Jun 2019 16:33:40 +0300 writes:
> That's what my code does.
> On Tue, Jun 18, 2019 at 4:27 PM Jeff Newmiller <jdnewmil using dcn.davis.ca.us>
> wrote:
>> Assuming Peter's equation applies, I think a direct for loop with
>> multiplication would be a more efficient way to obtain this answer than
>> repeated use of a power operator.
Of course! .. I was not suggesting it for this case where all
powers are needed !
>> On June 18, 2019 8:01:09 AM CDT, Martin Maechler <
>> maechler using stat.math.ethz.ch> wrote:
>> >>>>>> peter dalgaard
>> >>>>>> on Tue, 18 Jun 2019 11:45:39 +0200 writes:
>> >
>> > > Sounds like this is isomorphic to reachability in graph
>> > > theory. I wonder if
>> >
>> > > (sum_1^n M^i) > 0
>> >
>> > > would suffice?
>> >
>> >neat! (and I guess correct)
>> >
>> > > -pd
>> >
>> >Which reminds me that in the relatively distant past as
>> >maintainer of the 'expm' package I had introduced "%^%" (to
>> >compute matrix *integer* powers) with this first part of help() :
>> >
>> >--------------------------------------------------------------------------
>> >Matrix Power
>> >
>> >Description:
>> >
>> > Compute the k-th power of a matrix. Whereas ‘x^k’ computes
>> > _element wise_ powers, ‘x %^% k’ corresponds to k - 1 matrix
>> > multiplications, ‘x %*% x %*% ... %*% x’.
>> >
>> >Usage:
>> >
>> > x %^% k
>> >
>> >Arguments:
>> >
>> > x: a square matrix.
>> >
>> > k: an integer, k >= 0.
>> >
>> >Details:
>> >
>> > Argument k is coerced to integer using as.integer.
>> >
>> > The algorithm uses O(log2(k)) matrix multiplications.
>> >
>> >Value:
>> >
>> > A matrix of the same dimension as ‘x’.
>> >
>> >Note:
>> >
>> > If you think you need ‘x^k’ for k < 0, then consider instead
>> > ‘solve(x %^% (-k))’.
>> >
>> >........
>> >........
>> >
>> >--------------------------------------------------------------------------
>> >
>> >and I had thought / wondered to myself if this should not be
>> >brought into base R [or then at least 'Matrix' which is
>> >installed with R (almost surely)] but I think never got around
>> >to propose that.
>> >
>> >Opinions?
>> >
>> >
>> > >> On 18 Jun 2019, at 02:08 , Duncan Murdoch
>> > >> <murdoch.duncan using gmail.com> wrote:
>> > >>
>> > >> On 17/06/2019 7:34 p.m., Bert Gunter wrote:
>> > >>> Depends on what you mean by "simple" of course, but
>> > >>> suppose that: M[i,j] & M[j,k] & M[k,n] are TRUE and
>> > >>> M[i,k] and M[i,n] are FALSE. Then the procedure would
>> > >>> see that M[i,k] needs to change to TRUE, but not that
>> > >>> M[i,n] needs to also become TRUE *after* M[i,k] changes.
>> > >>> This seems to imply that an iterative solution is
>> > >>> necessary.
>> > >>
>> > >> Right, that's a good point.
>> > >>
>> > >> Duncan Murdoch
>> > >>
>> > >>> One such procedure, via repeated matrix multiplication
>> > >>> to check for and impose transitivity, appears to be
>> > >>> suggested by this discussion:
>> >>>>
>> >
>> https://math.stackexchange.com/questions/228898/how-to-check-whether-a-relation-is-transitive-from-the-matrix-representation
>> > >>> Cheers, Bert On Mon, Jun 17, 2019 at 10:29 AM Duncan
>> > >>> Murdoch <murdoch.duncan using gmail.com
>> > >>> <mailto:murdoch.duncan using gmail.com>> wrote: On 17/06/2019
>> > >>> 1:19 p.m., Duncan Murdoch wrote: > Suppose I have a
>> > >>> square logical matrix M which I'm thinking of as a >
>> > >>> relation between the row/column numbers.
>> > >>> >
>> > >>> > I can make it into a symmetric relation (i.e. M[i,j]
>> > >>> being TRUE implies > M[j,i] is TRUE) by the calculation
>> > >>> >
>> > >>> > M <- M | t(M)
>> > >>> >
>> > >>> > Is there a simple way to ensure transitivity,
>> > >>> i.e. M[i,j] & M[j,k] both > being TRUE implies M[i,k] is
>> > >>> TRUE?
>> > >>> >
>> > >>> > The operation should only change FALSE or NA values to
>> > >>> TRUE values; TRUE > values should never be changed. I
>> > >>> also want the changes to be minimal; changing everything
>> > >>> to TRUE would satisfy transitivity, but isn't useful to
>> > >>> me. Duncan Murdoch
>> > >>> ______________________________________________
>> > >>> R-help using r-project.org <mailto:R-help using r-project.org>
>> > >>> mailing list -- To UNSUBSCRIBE and more, see
>> > >>> https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do
>> > >>> read the posting guide
>> > >>> http://www.R-project.org/posting-guide.html and provide
>> > >>> commented, minimal, self-contained, reproducible code.
>> > >>>
>> > >>
>> > >> ______________________________________________
>> > >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and
>> > >> more, see https://stat.ethz.ch/mailman/listinfo/r-help
>> > >> PLEASE do read the posting guide
>> > >> http://www.R-project.org/posting-guide.html and provide
>> > >> commented, minimal, self-contained, reproducible code.
>> >
>> > > --
>> > > Peter Dalgaard, Professor, Center for Statistics,
>> > > Copenhagen Business School Solbjerg Plads 3, 2000
>> > > Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23
>> > > Email: pd.mes using cbs.dk Priv: PDalgd using gmail.com
>> >
>> > > ______________________________________________
>> > > R-help using r-project.org mailing list -- To UNSUBSCRIBE and
>> > > more, see https://stat.ethz.ch/mailman/listinfo/r-help
>> > > PLEASE do read the posting guide
>> > > http://www.R-project.org/posting-guide.html and provide
>> > > commented, minimal, self-contained, reproducible code.
>> >
>> >______________________________________________
>> >R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> >https://stat.ethz.ch/mailman/listinfo/r-help
>> >PLEASE do read the posting guide
>> >http://www.R-project.org/posting-guide.html
>> >and provide commented, minimal, self-contained, reproducible code.
>>
>> --
>> Sent from my phone. Please excuse my brevity.
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
> [[alternative HTML version deleted]]
More information about the R-help
mailing list