3 değişkeni karşılaştırmanın matematiksel yolu


14

Java'da sıralarını göz ardı ederken 3 pozitif çift değişken çiftini karşılaştırma görevi verildi. Aşağıdakileri yaptım:

if ((a1 == a2 && b1 == b2 && c1 == c2) ||
    (a1 == a2 && b1 == c2 && c1 == b2) ||
    (a1 == b2 && b1 == a2 && c1 == c2) ||
    (a1 == b2 && b1 == c2 && c1 == a2) ||
    (a1 == c2 && b1 == a2 && c1 == b2) ||
    (a1 == c2 && b1 == b2 && c1 == a2))
    // if true

Öğretmenden bu 3 sayı çiftini karşılaştırmanın matematiksel bir yolu olduğunu duydum.

Şimdiye kadar, toplama, çıkarma, güçlerinin toplamını 2 ile karşılaştırmaya çalıştım, ancak her zaman çiftin farklı olduğu ve ifadenin doğru olduğu bir durum buldum.

Herhangi bir fikir?

DÜZENLE:

Ödevi zaten gönderdim ve öğretmen cevabımın doğru olduğunu söyledi. Merak ediyorum.


Bu soruyu kapatmak için oy veriyorum Sanırım bu soruyu cevaplamak posteri aldatmaya yardımcı oluyor. Öğretmen bir cevap olduğunu söylerse, elbette zamanında ortaya koyacaktır. Müdahale etmek için yer yok
ControlAltDel

@ControlAltDel Hile değil çünkü zaten ödevi gönderdim ... Meraktan soruyorum
AceVentuRa

2
Ne zamandan beri insanlara ödevlerinde yardım etmiyoruz?
WJS

Çiftin farklı olduğu ve ifadenin doğru olduğu durumları ekleyebilir misiniz ?
Eritrean

2
@ControlAltDel Konu dışı değil, çünkü OP hangi kodu denediklerini ve çözmede zorluklarının ne olduğunu açıkça gösteriyor. Ödevlerle ilgili sorulara kategorik bir yasak yoktur. Konu hakkındaki kılavuzdaki 3. maddeye bakın .
EJoshuaS - Monica

Yanıtlar:


12

TL; DR

Her üçlünün toplamını, her üçlünün ürününü ve her üçlünün olası tüm kombinasyonlarının ürünlerinin toplamını karşılaştırın.

Nitty Cesur

By cebirin temel teoremi , derece N bir polinomun için, biz N kökleri olması gerekir.

Bu gerçeği kullanarak sıfırlarımızın olmasına izin verdik a1, a2, and a3. Şimdi, bu polinomun katsayılarını buluyoruz.

(x - a1) * (x - a2) * (x - a3)
(x^2 - (a1 + a2) * x + a1a2) * (x - a3) 
x^3 - (a1 + a2) * x^2 + (a1a2) * x - a3 * x^2 + (a1a3 + a2a3) * x - a1a2a3

x^3 + (-1 * (a1 + a2 + a3)) * x^2 + (a1a2 + a1a3 + a2a3) * x + (-1 * a1a2a3)

İki polinom eşdeğerse, aynı köklere sahip olmalıdırlar (yine FTA tarafından). Böylece tek yapmamız gereken üretilen polinomların katsayılarını karşılaştırmaktır.

Yani, eğer,

(-1 * (a1 + a2 + a3) == (-1 * (b1 + b2 + b3))
      ---equivalently---
a1 + a2 + a3 == b1 + b2 + b3

Ve

(a1a2 + a1a3 + a2a3) == (b1b2 + b1b3 + b2b3)

Ve

-1 * a1a2a3 == -1 * b1b2b3
      ---equivalently---
a1a2a3 == b1b2b3

Sonra üçüzleri sonuçlandırabiliriz a1, a2, a3ve b1, b2, b3eşdeğeriz.

Buna değer mi?

Pratik bir bakış açısından, bunun OP tarafından gösterildiği gibi kaba kuvvet kontrolünden gerçekten daha verimli olup olmadığını görelim.

İlk kontrol: Topla ve Karşılaştır. Bunun için toplam 4 ekleme ve 1 eşitlik kontrolü gerekir.

Toplamı kontrol et = 5; Toplam koşu = 5

İkinci kontrol: Ürün, Toplam ve Karşılaştır. Bunun için 6 toplam çarpma, 4 toplam ekleme ve 1 eşitlik kontrolü gerekir.

Toplamı kontrol et = 11; Toplam koşu = 16

Üçüncü kontrol: Ürün ve Karşılaştır. Bu 4 toplam çarpma ve 1 eşitlik kontrolü gerektirir.

Toplamı kontrol et = 5; Toplam koşu = 21

İki mantıksal AND işlemi eklenirken, "oluşturulan polinom yaklaşımının katsayıları" için toplam ikili işlem sayısı yalnızca şunları gerektirir:

23 ikili işlem

Kaba kuvvet kontrolü toplamda 18 toplam eşitlik kontrolü, 12 mantıksal AND karşılaştırması ve 5 mantıksal OR karşılaştırması gerektirir:

35 ikili işlem

Yani, açıkçası , cevap evettir, "üretilen polinom yaklaşımının katsayıları" gerçekten daha verimlidir. @WJS işaret Ancak, kaba kuvvet yaklaşımı çok sayıda fırsat vardır kısa devrelerden ve böylece yürütmek matematiksel bir yaklaşım daha olarak / daha verimli.

Eksiksiz Kapsamlılık İçin

Her üçüzün olası tüm kombinasyonlarının ürün toplamını kontrol etmeyi atlayamayız. Bunu dışarıda bırakırsak, bunun başarısız olduğu sayısız örnek vardır. Düşünün (23, 32, 45)ve (24, 30, 46)* :

23 + 32 + 45 = 100
24 + 30 + 46 = 100

23 * 32 * 45 = 33120
24 * 30 * 46 = 33120

Eşdeğer değildirler ancak aynı toplamı ve ürünü verirler. Bununla birlikte, olası tüm kombinasyonların ürünlerinin toplamını vermezler:

23 * 32 + 23 * 45 + 32 * 45 = 3211
24 * 30 + 24 * 46 + 30 * 46 = 3204

* Yukarıdaki örneğe benzer bir örneğin nasıl türetileceğini merak ederse, önce uzunluk 3 tamsayı M'nin tamsayı bölümlerini oluşturun , ürünlerini alın, kopyaları bulun ve bir çift seçin.


1
Keşke LaTeX
Joseph Wood'u

1
Ancak FTA yönteminizde, tüm testler yapılmalıdır. Kaba kuvvet yaklaşımında, bazı karşılaştırmalar kısa devre yapılacaktır. Yani göründüğü kadar kötü değil.
WJS

2
@WJS, kabul etti. Bu yaklaşım hakkında aynı şeyi kaba kuvvet yaklaşımı ile yapabildiğiniz dereceye kadar söyleyemezsiniz. Aslında, çoğu vaka için kaba kuvvet yaklaşımının kısa devre nedeniyle daha hızlı veya daha hızlı olacağına bahse girerim. TBH, Bunu kodlayacak olsaydım, muhtemelen kaba kuvvet yaklaşımını kullanırım, çünkü anlaşılması çok daha kolaydır.
Joseph Wood

-1

Sıralama izniniz varsa (a1 <= b1 <= c1 ve a2 <= b2 <= c2), o zaman 2 ^ a1 * 3 ^ b1 * 5 ^ c1 ile 2 ^ a2 * 3 ^ b2 * 5 ^ c2 (asal sayılar 2, 3, 5 kullanılarak)


bu cevabı açıklayabilir misin lütfen?
AceVentuRa

1
Sıralama izin veriliyorsa, tüm yapmanız gereken a1 == b1 ve a2 = b2 ve a3 == b3 olup olmadığını karşılaştırmaktır.
JB Nizet

Matematiksel bir yol istendiğini anlıyorum ...
Bruno

@Bruno Eminim öğretmenimin anlamı bir ifaçıklama yapmak ve ifsıralamaksızın bunları karşılaştırmanın matematiksel yolunu yazmaktı.
AceVentuRa

Kesiri olabilen çift değerli primerleri nasıl kullanıyorsunuz?
WJS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.